mysql_real_escape_string() 的PDO 等效項
在從mysql_* 到PDO 的程式碼遷移中,您正在尋找等效項。然而,需要注意的是,PDO 中沒有直接等效的函數。
從技術上講,PDO::quote() 是存在的,但它並不常用,並且與 mysql_real_escape_string() 不具有可比性。
正確的 MySQL 注入預防
當適當地將 PDO 與準備好的語句一起使用時,您可以獲得針對 MySQL 注入的保護。準備好的語句可以清理您的輸入,無需使用 mysql_real_escape_string() 等函數。
使用準備好的語句的安全資料庫查詢範例
這是一個安全資料庫的範例使用PDO 準備好的語句進行查詢:
$db = new PDO( "mysql:host=localhost;dbname=xxx;charset=utf8", "xxx", "xxx", [ PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ] ); // Prepared statement $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?"); // Execute statement $stmt->execute(array($_POST['color'])); // Fetch result $cars = $stmt->fetchAll(PDO::FETCH_ASSOC);
如您所見,我們沒有轉義或清理$_POST['color'],但由於PDO 和準備好的語句。
附加說明
結論
使用上面示範的準備好的語句總是比訴諸 mysql_* 函數更安全。 PDO 的內建保護機制提供了更強大、更安全的方法來防止 MySQL 注入。
以上是如何使用 PDO 預先準備語句防止 MySQL 注入:是否存在與 mysql_real_escape_string() 等效的 PDO?的詳細內容。更多資訊請關注PHP中文網其他相關文章!