PDO
PDO(PHP 数据对象),是 PHP 中的一个扩展库,用来操作数据库
使用 PDO 之前首先要确保 PHP 中安装了 PDO 这个扩展,我们可以使用以下两种方法来查看本地的 PHP 中是否安装了 PDO 扩展,同时要打开pdo_mysql扩展。
- 使用 phpinfo() 函数并在浏览器查看
- 在命令行中执行 php -m 查看是否有 pdo 扩展
PDO 中一共提供了三个类
PDO 类:PDO 的核心,主要负责连接数据、发送 SQL 语句等。
PDOStatement 类:主要用于解析结果集、实现预处理、事务等。
PDOException 类:主要用来代表 PDO 的异常。
PDO的基本用法
连接数据库
创建 PDO 的对象,就是连接数据库
1 | try{ |
断开连接
1 | $pdo = null; |
exec() 方法
当要执行 insert、update、delete 等非 select 的语句时可以使用 PDO 类中提供的 exec 方法:
1 | $pdo->exec($sql); |
query() 方法
当要执行 select 从表中获取数据时,需要使用以下类方法
1 | $pdo->query($sql); |
执行完 select 语句之后,PDO 会把数据保存到PDOStatement 类对象中返回,我们还需要使用这个类中的几个方法来获取数据
1 | $stmt = $pdo->query($sql); |
其他方法
1 | $id = $pdo->lastInsertId() // 返回新插入的记录的 id |
预处理
预处理是另一种高级的执行 SQL 语句的方式。和前面学习的执行 SQL 语句的方式相比,预处理有以下两个好处
➢ 执行 SQL 语句的速度更快。
➢ 这种方式更加的安全(对数据过滤,防止 SQL 注入)
因为预处理有很多好处,所以我们以后尽量都使用预处理的方式来执行 SQL 语句。
使用预处理的方式执行 SQL 语句主要分为两步:
- 先用 prepare 预执行 SQL 语句。
- 绑定数据并执行
预执行
1 | $sql= 'insert into test values(?,?)'; |
绑定数据并执行
1 | $stmt->execute([ |
事物
1 | //设置异常模式 |
PDO属性
1 | $pdo->setAttribute(属性名,属性值); // 设置属性值 |
属性列表
PDO 中可以设置的属性非常多
我们只先学习其中最常用的两个属性。
获取数据模式
我们可以使用 fetch 和 fetchAll 两个方法提取数据,在提供数据时可以通过参数设置提取模式:
错误模式
我们在执行每个操作时,都要考虑这个操作是否成功,如果失败了我们需要做相应的错误处理
但是,目前不同的操作错误处理的默认方式又是不同的,比如,连接数据库时如果失败会抛出 PDOException 异常,而其他操作失败时会返回 false。这就导致我们需要使用不同的方式
来处理错误。
我们可以通过错误模式属性,设置所有的错误模式相同,这样我们就可以写出统一的错误处
理代码。