📅  最后修改于: 2023-12-03 15:18:34.094000             🧑  作者: Mango
PDO (PHP Data Objects) 是 PHP5 中一个面向对象的数据库抽象层,提供一种统一的接口与多种数据库交互。PDO 提供了简单易用的 API,可在不同类型的数据库之间进行切换。支持的数据库包括 MySQL、PostgreSQL、Oracle、Microsoft SQL Server 等。
在 PHP5 中,PDO 已经默认安装,无需二次安装。
使用 PDO 连接数据库需要先创建一个 PDO 对象,我们需要提供一些连接数据库的信息,如数据库类型、服务器地址、数据库名、用户名、密码等。
$pdo = new PDO('mysql:host=127.0.0.1;dbname=test', 'root', '123456');
此处以连接 MySQL 数据库为例。代码中的 mysql
表示数据库类型,127.0.0.1
表示服务器地址,test
表示数据库名,root
表示用户名,123456
表示密码。
使用 PDO 执行 SQL 语句需要调用 PDO 对象的 query
方法,该方法可以执行任何 SQL 语句,如 SELECT、INSERT、UPDATE、DELETE 等。
$sql = "select * from user";
$stmt = $pdo->query($sql);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
上面的代码中,我们执行了一个 select * from user
的 SQL 查询语句,将结果以数组形式返回存储在 $result
中,并打印出来。其中,fetchALL
方法的第一个参数 PDO::FETCH_ASSOC
表示返回关联数组。
PDO 提供了一种有效的预处理机制,可以有效地防止 SQL 注入。预处理机制可以让我们在执行 SQL 语句之前先定义好占位符,然后再将真正的参数绑定到这些占位符上,最后再执行 SQL 语句。
$sql = "select * from user where id=:id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
上面的代码中,我们使用预处理机制定义了一个占位符 :id
,使用 bindParam
方法将 $id
绑定到 :id
上,最后执行 SQL 查询语句,将结果存储在 $result
中并打印出来。
PDO 提供了异常处理机制,可以让我们更加容易地处理错误信息。当执行 SQL 语句发生错误时,PDO 会抛出异常,我们可以通过 try-catch
语句来捕获异常并处理错误信息。
try {
$sql = "select * from user";
$stmt = $pdo->query($sql);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
} catch(PDOException $e) {
echo $e->getMessage();
}
上面的代码中,我们使用了 try-catch
语句来捕获异常,并使用 getMessage
方法获取异常信息。
PDO 是一个简单易用的 PHP 数据库抽象层,支持多种数据库类型,提供了预处理机制和异常处理机制等。熟练掌握 PDO 的使用,可以有效地提高程序开发效率和安全性。