MySQL 准备语句:超越转义
虽然手动转义是防止 SQL 注入的常见方法,但它可能容易出错。 PDO(PHP 数据对象)在标准 MySQL 中提供了强大的替代方案。
PDO 确保所有数据库输入都被视为文本,从而无需手动转义。这种方法与用于数据显示的正确 HTML 实体编码相结合,提供了针对注入的坚实防御。
要与 PDO 建立数据库连接,请创建一个数据库对象:
try {
$db = new PDO("mysql:host=[hostname];dbname=[database]", '[username]', '[password]');
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->exec('SET NAMES utf8');
} catch (PDOException $e) {
echo $e->getMessage();
}
要准备查询,请使用准备方法:
$stmt = $db->prepare('SELECT * FROM Table WHERE id = ?');
使用bindParam将值绑定到查询的占位符method:
$stmt->bindParam(1, $id);
使用execute方法执行查询:
$stmt->execute();
PDO 提供了许多优点:
请记住始终使用 PDO 进行数据库连接,并将其与适当的 HTML 实体编码结合起来安全的数据处理。 PDO 提供了一种强大而有效的方法来保护您的应用程序免受 SQL 注入。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3