使用 PDO
使用 PHP 数据对象(PDO)与数据库交互
使用 PDO 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 6 节课,共 6 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 6 节课。
PDO 概览
使用 PDO
欢迎来到下一课!在本课中,您将学习如何使用 PDO(PHP 数据对象)进行数据库交互。PDO 是一种灵活且安全的数据库连接与操作方式。让我们深入了解吧!

什么是 PDO?
什么是 PDO?
PDO(PHP 数据对象)是一个数据库访问层,为使用不同数据库系统提供统一的接口。它支持多种数据库,例如 MySQL、PostgreSQL、SQLite 等。
主要特性:
- 数据库独立性(可与多种数据库类型配合使用)。
- 内置对预处理语句的支持。
- 高级错误处理选项。
提示:PDO 是构建安全且可扩展的网络应用程序的理想选择。
使用 PDO 连接数据库
使用 PDO 连接数据库
要使用 PDO 连接数据库,您需要:
- 数据源名称(DSN),其中包括数据库类型、主机和名称。
- 有效的用户名和密码。
示例:
提示:敏感凭据请使用环境变量或配置文件。
<?php
$dsn = "mysql:host=localhost;dbname=testdb";
$username = "root";
$password = "";
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully!";
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
执行查询
执行查询
PDO 提供了两种执行查询的主要方法:
exec():用于不返回结果的语句(例如INSERT、UPDATE)。query():用于返回结果的语句(例如SELECT)。
示例:
<?php
// Insert a record
$pdo->exec("INSERT INTO users (name, email) VALUES ('Alice', 'alice@mail.com')");
// Retrieve records
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "Name: " . $row["name"] . ", Email: " . $row["email"] . "<br>";
}
?>
使用预处理语句
使用预处理语句
预处理语句对于安全高效的数据库交互至关重要。示例:
提示:使用占位符(:email)来防止 SQL 注入。
<?php
$sql = "SELECT * FROM users WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->execute(["email" => "alice@mail.com"]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
echo "Name: " . $user["name"];
?>
PDO 中的错误处理
PDO 中的错误处理
PDO 支持三种错误处理模式:
ERRMODE_SILENT:必须手动检查错误。ERRMODE_WARNING:错误会触发 PHP 警告。ERRMODE_EXCEPTION:错误会抛出异常(推荐)。
示例:
<?php
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$pdo->exec("INVALID SQL STATEMENT");
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
?>
获取数据
获取数据
PDO 提供了多种获取数据的方法:
fetch():获取单行数据。fetchAll():获取所有行。fetchColumn():获取单列值。
示例:
<?php
$stmt = $pdo->query("SELECT name FROM users");
while ($name = $stmt->fetchColumn()) {
echo "User: " . $name . "<br>";
}
?>事务管理
事务管理
使用事务将多个查询作为一个单元执行。示例:
提示:使用事务确保数据完整性。
<?php
try {
$pdo->beginTransaction();
$pdo->exec("INSERT INTO users (name, email) VALUES ('Bob', 'bob@mail.com')");
$pdo->exec("INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@mail.com')");
$pdo->commit();
echo "Transaction successful!";
} catch (PDOException $e) {
$pdo->rollBack();
echo "Transaction failed: " . $e->getMessage();
}
?>
做得很好!
做得很好!
恭喜您!您已经学会了如何使用 PDO 进行安全高效的数据库交互,包括连接数据库、执行查询和管理事务。在下一课中,我们将探索使用 PDO 的高级 SQL 查询技术。让我们继续编写代码吧!

常见问题解答
「使用 PDO」课时是免费的吗?
是的 — 「使用 PDO」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 6 节课。
「使用 PDO」这节课中我会学到什么?
使用 PHP 数据对象(PDO)与数据库交互 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 PHP Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 6 节课,共 6 节。
「使用 PDO」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 PHP Academy 课中编写并运行代码吗?
能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。