预处理语句
使用预处理语句保护数据库查询
预处理语句 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 5 节课,共 6 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 6 节课。
预处理语句概览
预处理语句
欢迎来到下一课!在本课中,您将学习预处理语句,以及它们如何让数据库交互更加安全高效。让我们开始吧!

什么是预处理语句?
什么是预处理语句?
预处理语句是数据库管理系统的一项功能,可让您安全高效地执行 SQL 查询。它们将 SQL 代码与数据分离,从而防止 SQL 注入攻击。
示例:使用占位符(:name、:email),而不是将用户输入直接嵌入查询中。
为什么使用预处理语句?
为什么使用预处理语句?
预处理语句具有以下几项优势:
- 安全性:通过转义用户输入来防止 SQL 注入。
- 效率:使用不同数据重复利用同一条语句,从而减少查询解析时间。
- 可维护性:让代码更易于阅读和调试。
重点:处理用户提供的数据时,请始终使用预处理语句。
创建预处理语句
创建预处理语句
要创建预处理语句,请按照以下步骤操作:
- 使用占位符编写 SQL 查询。
- 使用数据库连接预处理查询。
- 将值绑定到占位符。
- 执行语句。
示例:
提示:使用关联数组可以轻松绑定值。
<?php
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute(["name" => "Alice", "email" => "alice@mail.com"]);
?>绑定值
绑定值
使用 bindParam() 或 bindValue() 方法将值绑定到占位符。示例:
<?php
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(":name", $name);
$stmt->bindParam(":email", $email);
$name = "Bob";
$email = "bob@mail.com";
$stmt->execute();
?>
使用预处理语句执行 SELECT 查询
使用预处理语句执行 SELECT 查询
预处理语句适用于所有类型的 SQL 查询,包括 SELECT。示例:
提示:使用 fetchAll() 获取多行数据。
<?php
$sql = "SELECT * FROM users WHERE name = :name";
$stmt = $pdo->prepare($sql);
$stmt->execute(["name" => "Alice"]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo "Name: " . $result["name"] . ", Email: " . $result["email"];
?>
重复使用预处理语句
重复使用预处理语句
预处理语句可以使用不同的值重复执行,从而提高效率。示例:
<?php
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$users = [
["name" => "Charlie", "email" => "charlie@mail.com"],
["name" => "Dave", "email" => "dave@mail.com"]
];
foreach ($users as $user) {
$stmt->execute($user);
}
echo "Multiple records inserted successfully!";
?>
防止 SQL 注入
防止 SQL 注入
预处理语句会转义用户输入中的特殊字符,从而防止 SQL 注入攻击。示例:
<?php
$sql = "SELECT * FROM users WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->execute(["email" => "' OR 1=1; --"]);
$result = $stmt->fetch();
if ($result) {
echo "User found.";
} else {
echo "No user found.";
}
?>
做得很好!
做得很好!
恭喜您!您已经学会了如何在 PHP 中使用预处理语句来保护数据库交互。在下一课中,我们将探索使用连接和聚合的高级查询技术。让我们继续编写代码吧!

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