mysqli_real_escape_string()函數是PHP中的內置函數,用於轉義所有特殊字符以用於SQL查詢。在將字符串插入數據庫之前使用它,因為它刪除了可能幹擾查詢操作的任何特殊字符。
當使用簡單的字符串時,它們中可能包含特殊字符,例如反斜杠和撇號(尤其是當它們直接從輸入了此類數據的形式獲取數據時)。這些被認為是查詢字符串的一部分,並且會幹擾其正常運行。
<?php
$connection = mysqli_connect(
"localhost", "root", "", "Persons");
// Check connection
if (mysqli_connect_errno()) {
echo "Database connection failed.";
}
$firstname = "Robert'O";
$lastname = "O'Connell";
$sql="INSERT INTO Persons (FirstName, LastName)
VALUES ('$firstname', '$lastname')";
if (mysqli_query($connection, $sql)) {
// Print the number of rows inserted in
// the table, if insertion is successful
printf("%d row inserted.\n",
$mysqli->affected_rows);
}
else {
// Query fails because the apostrophe in
// the string interferes with the query
printf("An error occurred!");
}
?>
在上麵的代碼中,查詢失敗,因為當使用mysqli_query()執行撇號時,將撇號視為查詢的一部分。解決方案是在查詢中使用字符串之前使用mysqli_real_escape_string()。
<?php
$connection = mysqli_connect(
"localhost", "root", "", "Persons");
// Check connection
if (mysqli_connect_errno()) {
echo "Database connection failed.";
}
$firstname = "Robert'O";
$lastname = "O'Connell";
// Remove the special characters from the
// string using mysqli_real_escape_string
$lastname_escape = mysqli_real_escape_string(
$connection, $lastname);
$firstname_escape = mysqli_real_escape_string(
$connection, $firstname);
$sql="INSERT INTO Persons (FirstName, LastName)
VALUES ('$firstname', '$lastname')";
if (mysqli_query($connection, $sql)) {
// Print the number of rows inserted in
// the table, if insertion is successful
printf("%d row inserted.\n", $mysqli->affected_rows);
}
?>
輸出:
1 row inserted.
相關用法
- PHP Ds\Set contains()用法及代碼示例
- PHP sin( )用法及代碼示例
- d3.js d3.map.set()用法及代碼示例
- p5.js box()用法及代碼示例
- PHP abs()用法及代碼示例
- PHP Ds\Map first()用法及代碼示例
- PHP Ds\Map map()用法及代碼示例
- PHP tan( )用法及代碼示例
- PHP cos( )用法及代碼示例
- d3.js d3.max()用法及代碼示例
- p5.js value()用法及代碼示例
注:本文由純淨天空篩選整理自ArkadyutiBanerjee大神的英文原創作品 PHP | mysqli_real_escape_string() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。