用PDO 取代mysql_real_escape_string()
在從mysql_* 函數到PDO 的轉換中,必須了解PDO 的作用與mysql_real_escape_string() 完全相同的功能。
PDO 不是手動轉義字串,而是依賴準備好的語句來防止 SQL 注入。準備好的語句對稍後插入的值使用佔位符 (?),防止惡意字元作為程式碼執行。範例:
<code class="php"><?php // Connect to the database $db = new PDO('mysql:host=localhost;dbname=test', 'root', 'password'); // Prepare the statement with placeholder for value $stmt = $db->prepare('SELECT * FROM users WHERE username = ?'); // Bind the value to the placeholder (already sanitized via other means) $stmt->bindParam(1, $username); // Execute the statement without fear of SQL injection $stmt->execute(); // Fetch the results $users = $stmt->fetchAll(PDO::FETCH_ASSOC);</code>
優點使用PDO 的好處:
注意: 雖然PDO::quote() 可用於轉義字串,但通常不建議使用,因為它不提供相同的等級
透過遵循最佳實踐並在PDO 中使用準備好的語句,開發人員可以有效防止程式碼中的SQL 注入漏洞。以上是如何從 mysql_real_escape_string() 遷移到 PDO 準備語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!