首页 > 学院 > 开发设计 > 正文

PDO操作MySQL

2019-11-09 13:36:16
字体:
来源:转载
供稿:网友

手册可以找到:函数参考》数据库扩展》数据库抽象层》PDO; 在php.ini中开启模块: extension=php_pdo_MySQL.dll然后重启服务器

连接数据库

<?php$DSN = "mysql:host=服务器地址/名称;port=端口号;dbname=数据库名";$Opt = array(PDO::MYSQL_ATTR_INIT_COMMAND=>” set names 连接编码”);// 返回来的就是一个pdo类的对象$pdo = new pdo($DSN, "用户名", "密码", $Opt);?>

PDO常用方法

<?php/*$result = $pdo->query(“返回结果集的sql语句”);结果:成功:就是一个pdo结果集对象;失败:false;$result = $pdo->exec(“增删改的sql语句”);结果:true(表示成功),false(表示失败);$pdo = null; //销毁该对象;$stmt = $pdo->query(“select ...... ”);//这是获得结果集$stmt->rowCount() ; //得到结果集的行数$stmt->columnCount() ; //得到结果集的列数$stmt->fetch( [返回类型] ); //从结果集中取出“一行”数据;取出的结果,由其中的“返回类型”来决定,常用的有: PDO::FETCH_ASSOC:表示关联数组 PDO::FETCH_NUM:表示索引数组 PDO::FETCH_BOTH:表示前二者皆有,这是默认值 PDO::FETCH_OBJ:表示对象$stmt->fetchAll([返回类型]);一次性获取结果集中的所有数据,返回的是一个二维数组,相当于我们自己写的GetRows()$stmt->fetchColumn( [$i] );获取结果集中的“下一行”数据的第$i个字段的值,结果是一个“标量数据”,相当于我们自己的写的:GetOneData()$stmt->fetchObject();$stmt->errorCode();:pdo结果集的错误代号$stmt->errorInfo(); pdo结果集的错误信息(是一个数组)$stmt->closeCursor(); 关闭结果集(相当于mysql_close() )*/?>

PDO预处理

就是,为了“重复执行”多条结构类似的sql语句,而将该sql语句的形式“进行预先处理” 该sql语句的“形式”中,含有“未给定的数据项”。 然后,到正式执行的时候,只要给定相应的形式上的“数据项”,就可以更快速方便执行。 比如(有两种预定义语法): 语法1:

<?php/*$sql = “select * from tab where id = ? “; //这里这个“?”就是未给定的数据项;这里通常叫做“占位符”//也可以是多个问好。*/?>

语法2:

<?php/*$sql = “select * from tab where id = :v1 and name = :v2 “; //这里这个“:v1”和 “:v2” 就是未给定的数据项;通常这里叫做“命名参数”;*/?>

使用

1,对含预处理语法的sql语句进行“预处理”:

$stmt = $pdo->PRepare( $sql );

2, 对上述预处理的结果对象($stmt)的未赋值数据,进行赋值:

$stmt->bindValue( 数据项1, 值1); $stmt->bindValue( 数据项2, 值2);

3, 执行:$stmt->execute(); 这样之后,该sql语句就算正式完成!

占位符的处理形式

<?php$sql="select user_id,user_name,age,edu from user_list where user_id=? and user_name=?";$stmt=$pdo->prepare($sql);$stmt->bindValue(1,6); //占位符按自然顺序排,从1开始,user_id=6$stmt->bindValue(2,'user2');$stmt->execute();$arr=$stmt->fetch(PDO::FETCH_ASSOC);print_r($arr);?>

命名参数的处理形式

<script>$sql="select user_id,user_name,age,edu from user_list where user_id=:v1 and user_name=:v2";$stmt=$pdo->prepare($sql);$stmt->bindValue(":v1",6); //占位符按自然顺序排,从1开始,user_id=6$stmt->bindValue(":v2",'user2');$stmt->execute();$arr=$stmt->fetch(PDO::FETCH_ASSOC);print_r($arr);</script>

异常模式

可以简单理解为:适应面向对象语法的处理错误的一种语法结构。如下所示:

try{在这里,可以执行“可能出错”的语句(多条也可以);一旦发生错误,就会终止当前范围的后续程序执行,而立即跳转到catch部分——处理错误!}catch( Exception $e ){//一旦发生错误,就会进入这里,此时,并会生成一个“错误对象”;//该错误对象,就是系统类Exception的一个实例:它包含了错误信息。}pdo要使用异常模式,就得专门设置(因为其默认是静默模式);$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
上一篇:Sql片断

下一篇:mysql去除重复

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表