加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 云服务器、云原生、边缘计算、云计算、混合云存储!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php中的pdo如何使用

发布时间:2023-10-05 16:03:16 所属栏目:PHP教程 来源:转载
导读:   这篇文章主要讲解了“php中的pdo如何用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中的pdo如何用”吧
  这篇文章主要讲解了“php中的pdo如何用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中的pdo如何用”吧!
 
  一、 基本概念
 
  1、 PDO:PHP Data Object的缩写。PDO扩展类库为PHP定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。
 
  PDO就是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口。
 
  2、 对任何数据库的操作,并不是使用PDO扩展本身执行的,必须针对不同的数据库服务器使用特定的PDO驱动程序访问。如:MYSQL(PDO_MYSQL)。可以在phpinfo()函数中查看PDO部分的列表。
 
  二、PDO的安装
 
  1、Linux:安装PHP时,向configure命令中添加如下标志:
 
  –with-pdo-mysql=/usr/local/mysql //其中/usr/local/mysql为mysql安装目录
 
  2、Windows:
 
  在C:windows下找到php.ini文件
 
  (1)打开:extension=php_pdo.dll
 
  (2)打开:extension=php_pdo_mysql.dll
 
  三、使用PDO过程
 
  1、连接数据库
 
  (1)创建PDO对象
 
  (2)设置PDO行为属性(setattribute())
 
  (3)设置字符集($link->query(‘set names UTF8’))
 
  2、发送SQL语句
 
  (1)准备SQL语句
 
  (2)执行发送
 
  3、查看结果
 
  四、连接数据库
 
  1、创建PDO对象:
 
  (1)$link = new PDO(DSN, 用户名, 密码, 驱动属性);
 
  1)DSN:数据源名,用来定义一个必须用到的驱动程序和要使用的数据库。mysql的DSN格式:’mysql:host=localhost;dbname=lamp30’
 
  2)可以将DSN放到文件里,如:’uri:file:///usr/local/dsn.txt’
 
  3)创建对象时要使用try…catch语句,因为在声明PDO实例发生错误时,会自动抛出一个异常。如:
 
  代码如下
 
  try{
 
  $link = new PDO(‘mysql:host=localhost;dbname=lamp30’,’root’,’111111’);
 
  }catch(PDOException $e){
 
  echo $e->getMessage();
 
  exit(‘连接数据库错误.’);
 
  }
 
  2、驱动属性
 
  (1)可以将必要的几个选项组成数组(属性名作为元素键,属性值作为元素值)传递给构造方法的第四个参数。如果没有在构造方法中定义驱动属性,可以在之后使用PDO类的setattribute()函数定义各个属性。
 
  (2)书P501页有这些属性中文释义。
 
  3、设置字符集:$link->query(‘set names UTF8’)
 
  五、发送SQL语句
 
  (1)$link->exec():执行增删改,返回受影响行数,执行失败返回false或0。
 
  (2)$link->query():执行查询,返回PDOStatement结果集对象。
 
  六、查询结果
 
  1、非查询:
 
  (1)直接用$link->exec()的返回影响行数
 
  (2)$link->lastInsertId()返回最后一条INSERT命令生成的AUTO_INCREMENT编号值
 
  2、见预处理
 
  七、预处理
 
  1、第二步:发送SQL语句
 
  代码如下
 
  $stmt = $link->prepare(‘select * from user where id=:id’);
 
  $stmt->bindparam(‘:id’, $id, PDO::PARAM_INT);
 
  $id = 2;
 
  $stmt->execute();
 
  bindParam()参数有以下7种:可以不用写
 
  PDO::PARAM_INT
 
  PDO::PARAM_STR
 
  PDO::PARAM_BOOL
 
  PDO::PARAM_NULL
 
  PDO::PARAM_LOB:大对象数据类型
 
  PDO::PARAM_STMT:PDOstatement类型
 
  PDO::PARAM_INPUT_OUTPUT:存储过程使用的数据类型
 
  2、第三步:
 
  如:
 
  代码如下
 
  $stmt = $link->query(‘select * from user’);
 
  (1)fetch()方法
 
  $pdoStat ->bindColumn(1, $id); //第一个参数可以是从1开始的索引值
 
  $pdoStat ->bindColumn(‘name’, $name); //也可以是列名
 
  $pdoStat ->bindColumn(‘pass’, $pass);
 
  while($row = $stmt ->fetch(PDO::FETCH_BOUND)){
 
  echo $id.’ ’;
 
  echo $name.’ ’;
 
  echo $pass.’
 
  ’;
 
  }
 
  fetch()参数有六种:见手册。
 
  可以用setFetchMode()方法设置默认模式。
 
  (2)fetchall()方法
 
  代码如下
 
  $result = $stmt ->fetchall();
 
  foreach($result as $row){
 
  echo $row[‘id’].’ ’;
 
  echo $row[‘name’].’ ’;
 
  echo $row[‘pass’].’
 
  ’;
 
  }
 
  Fetchall()参数与fetch()相同。
 
  八、事务处理
 
  1、关闭自动提交(在驱动属性中修改)
 
  2、打开事务
 
  3、提交事务/回滚
 
  4、打开自动提交
 
  如:
 
  代码如下
 
  $link = new PDO(‘mysql:host=localhost;dbname=lamp30’);
 
  //1
 
  $link->setattribute(PDO::ATTR_AUTOCOMMIT, false);
 
  //2
 
  $link->begintransaction();
 
  $result = $link->exec(‘insert into user(name,paa) values(‘wsy’,’111’)’);
 
  //3
 
  if($result){
 
  $link->commit();
 
  }else{
 
  $link->rollback();
 
  }
 
  //4
 
  $link->setattribute(PDO::ATTR_AUTOCOMMIT, true);
 
  九、PDO对象中的成员方法
 
  1、$link->getattribute(属性名):获取一个驱动属性。
 
  2、$link->setattribute(属性名,属性值):设置一个驱动属性。
 
  1)因oracle把空字符串返回为NULL值,而其它数据库无此特性,为了有更好的兼容性$link->setattribute(PDO::ATTR_ORACLE_NULLS ,PDO::NULL_EMPTY_STRING,);
 
  2)有三种显示错误的方式:静态、WARNING消息、异常
 
  3、$link->errorcode():获取错误码。
 
  1)如setattribute函数设置显示错误方式为静态,则出现错误时什么都不显示,必须调用此函数,才能查看错误号。
 
  4、$link->errorinfo():获取错误信息(数组)。
 
  1)如setattribute函数设置显示错误方式为静态,则出现错误时什么都不显示,必须调用此函数,才能查看错信息。
 
  5、$link->lastinsertid():获取插入到表中的最后一条数据主键值(如有多条数据同时插入,返回第一个插入行的ID)。
 
  6、$link->prepare():发送准备的SQL语句,返回PDOStatement对象。
 
  7、$link->begintransaction():打开事务。
 
  8、$link->commit():提交一个事务,执行一个SQL。
 
  9、$link->rollback():回滚一个事务。
 
  十、错误模式
 
  1、静态模式:
 
  代码如下
 
  $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)
 
  (1) 默认模式,在错误发生时不进行任何操作,PDO将只设置错误代码。
 
  (2) 查看错误可以调用errorCode()和errorInfo(),PDO和PDOStatement类都有这两个方法。
 
  2、警告模式:
 
  代码如下
 
  $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)
 
  (1)此模式在设置错误代码以外,PDO还将发出一条PHP传统的E_WARNING消息。
 
  (2)这是mysql和mysqli显示错的方式。
 
  3、异常模式:
 
  代码如下
 
  $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
 
  (1) 此模式在设置错误代码以外,PDO还将抛出一个PDOException,并设置其属性,以反映错误代码和错误信息。
 
  (2) 如果异常导致脚本终止,则事务将自动回滚。
 
  (3) PDO推荐使用此模式。
 
  十一、持久连接
 
  代码如下
 
  $link->setAttribute(PDO::ATTR_PERSISTENT, true);
 
  持久连接即当脚本执行结束时不会自动断开连接,而且用$link->close()不能关闭连接。
 

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章