首頁 > 後端開發 > PHP問題 > PHP如何使用mysqli_real_escape_string()函數?

PHP如何使用mysqli_real_escape_string()函數?

醉折花枝作酒筹
發布: 2023-03-10 11:18:01
轉載
4062 人瀏覽過

本篇文章要為大家介紹PHP使用mysqli_real_escape_string()函數的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

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&#39;O" ;
$lastname = "O&#39;Connell" ;
   
$sql ="INSERT INTO Persons (FirstName, LastName) 
             VALUES ( &#39;$firstname&#39; , &#39;$lastname&#39; )";
   
   
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&#39;O" ;
$lastname = "O&#39;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 ( &#39;$firstname&#39; , &#39;$lastname&#39; )";
  
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如何使用mysqli_real_escape_string()函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板