MySQL 准备语句:超越转义
虽然手动转义是防止 SQL 注入的常见方法,但它可能容易出错。 PDO(PHP 数据对象)在标准 MySQL 中提供了强大的替代方案。
PDO 确保所有数据库输入都被视为文本,从而无需手动转义。这种方法与用于数据显示的适当 HTML 实体编码相结合,提供了针对注入的坚实防御。
要与 PDO 建立数据库连接,请创建一个数据库对象:
<code class="php">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(); }</code>
准备查询,使用prepare方法:
<code class="php">$stmt = $db->prepare('SELECT * FROM Table WHERE id = ?');</code>
使用bindParam方法将值绑定到查询的占位符:
<code class="php">$stmt->bindParam(1, $id);</code>
使用execute方法执行查询:
<code class="php">$stmt->execute();</code>
PDO 具有众多优势:
记住始终使用 PDO 进行数据库连接,并将其与用于安全数据处理的正确 HTML 实体编码。 PDO 提供了一种强大而有效的方法来保护您的应用程序免受 SQL 注入。
以上是除了手动转义之外,PDO 如何增强 MySQL 安全性?的详细内容。更多信息请关注PHP中文网其他相关文章!