首頁  >  文章  >  資料庫  >  從 mysql_* 遷移到 PDO 時如何轉義使用者輸入?

從 mysql_* 遷移到 PDO 時如何轉義使用者輸入?

Susan Sarandon
Susan Sarandon原創
2024-10-26 12:51:03496瀏覽

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

PDO 等價於mysql_real_escape_string

題目:

從mysql_m. 遷移到什麼價函數?

答案:

與 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