当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


PHP mysqli_real_escape_string()用法及代码示例


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. 



相关用法


注:本文由纯净天空筛选整理自ArkadyutiBanerjee大神的英文原创作品 PHP | mysqli_real_escape_string() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。