在 PHP 中,當我們需要將字符串插入到 SQL 查詢語句中時,很重要的一點是要轉義字符串。這樣可以確保插入的字符串不會破壞 SQL 查詢,同時也可以防止 SQL 注入攻擊。在 PHP 中,我們可以使用mysqli_real_escape_string
函數或pdo->quote
方法來轉義字符串。
假設我們要將一個名為 "O'Brien" 的用戶插入到數據庫表中,如果我們不轉義這個名字,在執行 SQL 查詢時就會出現語法錯誤,因為單引號在 SQL 中被用作字符串定界符。為了避免這種問題,我們可以使用轉義字符。
下面是使用mysqli_real_escape_string
函數來轉義字符串的示例代碼:
$name = "O'Brien";
$escaped_name = mysqli_real_escape_string($conn, $name);
$sql = "INSERT INTO users (name) VALUES ('$escaped_name')";
$result = mysqli_query($conn, $sql);
在這個示例中,我們首先使用mysqli_real_escape_string
函數對名字進行轉義,這樣字符串中的單引號就會被轉義成 \',從而在 SQL 查詢語句中不會引起問題。然后,我們將轉義后的名字插入到 SQL 查詢語句中。最后,通過執行查詢語句將用戶的名字插入到數據庫中。
另一種方法是使用 PDO 提供的quote
方法進行字符串轉義。下面是使用quote
方法的示例代碼:
$name = "O'Brien";
$escaped_name = $pdo->quote($name);
$sql = "INSERT INTO users (name) VALUES ($escaped_name)";
$result = $pdo->query($sql);
在這個示例中,我們同樣首先對名字進行轉義,然后將轉義后的名字直接插入到 SQL 查詢語句中。通過執行查詢語句,我們成功將用戶的名字插入到數據庫中。
無論是使用mysqli_real_escape_string
函數還是pdo->quote
方法,都可以確保我們插入的字符串不會破壞 SQL 查詢,并且能夠防止 SQL 注入攻擊。當我們處理需要插入到 SQL 查詢的用戶輸入時,始終應該使用這些轉義字符的方法來保證數據的安全。