多语言展示
当前在线:1909今日阅读:84今日分享:32

PHP-PDO数据对象

PHP-PDO数据对象
工具/原料

PHP-PDO

PDO基本理解:
1

1.PDO: PHP  Data  Object:PHP数据对象到底是什么?它是“别人”写的类似我们自己写的MySQLDB工具类!即,它的作用也是:1),连接数据库;2),执行增删改语句;3),执行查询语句:可以分为3中:查多行,查一行,查一个 但,PDO功能强大:1),可以连接很多种数据库。2),几乎能完成数据库的各种操作:各种增删改查,以及事务。。。。 不过,在php语言配置领域,其实PDO的结构类似这样:

2

2.比如(示意性代码):$p = new  pdo( 连接某种数据库的参数信息 );$re1 = $p->exec( ‘insert / update / delete ........’) //返回“受影响的行数”或false$re2 = $p->query(‘select / desc / show .....’);  //返回“pdo结果集对象”或false其中,各种不同数据库的“引擎”,需要到php.ini中的打开相应的“模块”,比如:

4

4.结果为:

pdo的错误处理
1

1.模式1:默认模式(常规错误模式)比如,pdo对象执行如下“错误sql语句”,$re1  =  $pdo->exec(“ deleteeee  from  XXX   where  id = 12” );则根据我们之前对pdo的了解,此时返回的是false——表示执行错误。但此时,有怎么对其进行“错误处理”。 我们来对比之前的纯mysql函数:$sql  =  “deleteddddd   from  YYYY  where  id  =  12”;$result  =  mysql_query( $sql );if(  $result  ===  false ){ //错误时的处理:echo  “发生错误:”  .  mysql_error();}else{//正确时 。。。。}那么,pdo的错误处理,默认跟该形式几乎一样!类似这样:if(  $re1===  false ){ //错误时的处理:echo  “错误代号:”  .  $pdo->errorcode();  //errorcode()就是一个数字(代号)echo  “错误信息:”  .  $pdo->errorinfo();  //errorinfo()的结果是一个数组!//实际应该这样:$err = $pdo->errorinfo();echo  “错误信息:”  .  $err[2];}else{//正确时 。。。。}

2

2.模式2:异常模式 什么叫做异常?异常就是不正常。对编程的人来说,凡是“超出程序员的逻辑预计”的结果,都是异常——其实,异常,就是“错误”的另一个说法——是在面向对象领域的说法。因为,一个错误发生,其实也可以说生成了一个“异常对象”——系统内部有一个“异常类”。 要想pdo发生错误时,以异常模式进行处理,得先“设置”pdo错误处理模式为“异常模式”,如下:$pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_EXCEPTION);然后,异常模式的处理语法为:try{$re1 = $pdo->query( “sql语句”);var_dump($re1);}catch(  PDOEXCEPTION  $e  ){ //PDOEXCEPTION是一个“内部类”,表示pdo的异常类//$e是一个该类的对象。echo “发生错误:”echo  “错误代号”  .  $e->getcode() ;echo “错误内容”   .  $e->getmessage();}

3

3.结果为:

pdo结果集对象
1

1.pdo对象:创建该对象: $pdo = new  pdo(........);调用(执行)该对象的一些方法:$pdo->exec(),  $pdo->query(),  $pdo->lastinserted(),  $pdo->begintransaction(),$pdo->errorcode(), ........pdo结果集对象:创建该对象:$stmt  =  $pdo->query(“查询语句”); //执行成功的时候,调用(执行)该对象的一些方法:$result ->方法名()主要有:$stmt->rowCount() :获得结果集的行数$stmt->columnCount() ;获得结果集的列数$stmt->fetch( [返回类型] ):返回一行数据,是一个一维数组//返回类型常用的有:PDO::FETCH_ASSOC:表示关联数组PDO::FETCH_NUM:表示索引数组PDO::FETCH_BOTH:表示前二者皆有,这是默认值PDO::FETCH_OBJ:表示对象$stmt->fetchAll([返回类型]);返回多行数据,是一个二维数组$stmt->fetchColumn( [$i] );返回单个数据,是一个标量数据,其中$i表示第几个字段上的值,可以省略,表示0,即取“第一个字段”的值。$stmt->errorCode();错误代号$stmt->errorInfo();错误信息$stmt->closeCursor();关闭资源举例(取一行):

2

2.取多行:

pdo结果集对象的预处理语法

pdo的结果集对象就是:$stmt  =  $pdo->query(“sql语句”); 所谓预处理语法,其实就是该“sql语句”中,有的部分并没有给出该有的数据,而是在后面再给。比如:$sql1  =  “select  *  from  user_list  where  id > ?  and  age  <  ?”; //2个问号,就是“未定数据”或:$sql2  =  “insert  into  XXX( id,  age,  name,  edu)values( null,  ? ,  ?,  ? )”;//有3个未定数据 则这种语句,就称为“预处理语句”(语法),其执行过程是这样的:1,第1步:$stmt  =  $pdo->prepare( $sql1 ); //得到“预处理结果集”,其实此时并没有实际数据,//实际上,该语句目前并没有执行,而只是“预先编译处理”了2,第2步:给该预处理结果集中的未定数据进行“赋值”,比如:$stmt->bindValue(1,  10); //对$sql1中的第一个问号赋值为10$stmt->bindValue(2,  18); //对$sql1中的第2个问号赋值为183,第3步:执行,此时该语句才算生效:$stmt -> execute(); //执行。举例:

推荐信息