PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。
PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不提供 数据库 抽象层;
PDO常用方法有:
- 预处理语句
1 | a. 执行预处理:$stmt = $pdo->prepare($sql); |
- 事务处理
1 | a. 开启事务:$pdo->beginTransaction(); |
- 错误处理
try catch
语句
原理
使用PDO需要PHP开启PDO扩展,使用步骤如下:
- 在php.ini中开启
extension=php_pdo_mysql.dll
;- 设置dsn ,
$dsn="mysql:host=localhost;port=3306;dbname=test_db";
- 设置字符集,
$opt=array(PDO::MYSQL_ATTR_INIT_COMMAND=>'set names utf8');
- 实例化PDO对象,
$pdo = new PDO($dsn,$user_name,$pwd,$opt);
返回的是PDO对象- 执行语句,查询使用
$pdo->query()
返回的是结果集对象PDOStatement
或false,增删改使用$pdo->exec()
返回的是true or false;- 处理结果集对象
$stmt->fetch(PDO::FETCH_ASSOC)
或$stmt->fetchAll()
- 关闭结果集
$stmt->closeCursor()
;- 销毁PDO对象:
$pdo = null;
场景
- 预处理语句可以防SQL注入,“重复执行”多条结构类似的sql语句,避免重复分析/编译/优化周期;
- 不同数据库使用相同的方法名,解决数据库连接不统一的问题。
实例
1 |
|