首页  >  文章  >  数据库  >  从 mysql_* 迁移到 PDO 时如何转义用户输入?

从 mysql_* 迁移到 PDO 时如何转义用户输入?

Susan Sarandon
Susan Sarandon原创
2024-10-26 12:51:03574浏览

 How to Escape User Input When Migrating from mysql_* to PDO?

PDO 等价于 mysql_real_escape_string

问题:

从 mysql_* 迁移到 PDO 时,等价于什么mysql_real_escape_string 函数?

答案:

与 mysql_real_escape_string 不同,PDO 通过使用准备好的语句来执行自动转义。准备好的语句使用占位符(例如?),而不是直接将用户输入插入到 SQL 查询中,从而防止 SQL 注入漏洞。

示例:

<code class="php">try {
    $db = new PDO(...);
} catch (PDOException $e) {
    echo "Error connecting to mysql: " . $e->getMessage();
}

if (isset($_POST['color'])) {
    $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?");
    $stmt->execute([$_POST['color']]);

    $cars = $stmt->fetchAll(\PDO::FETCH_ASSOC);
    var_dump($cars);
}</code>

在此示例中, $_POST['color'] 在准备好的语句中作为参数传递,保护查询免受注入。

附加说明:

  • 始终包含PDO 连接 DSN 中的 charset=utf8 以确保安全。
  • 启用 PDO 错误模式异常 (PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) 以优雅地处理数据库错误。
  • 小心使用过时的 MySQL 版本 (MySQL
  • 有关 PDO 和 SQL 注入预防的更多信息,请参阅以下资源。

进一步阅读:

  • MySQL 开发人员的 PDO 教程

以上是从 mysql_* 迁移到 PDO 时如何转义用户输入?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn