ホームページ > バックエンド開発 > 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() 関数は、SQL クエリで使用するすべての特殊文字をエスケープするために使用される PHP の組み込み関数です。クエリ操作を妨げる可能性のある特殊文字が削除されるため、データベースに文字列を挿入する前にこれを使用します。

単純な文字列を使用する場合、バックスラッシュやアポストロフィなどの特殊文字が含まれる場合があります (特に、データが入力されたフォームから直接データを取得する場合)。これらはクエリ文字列の一部とみなされ、その適切な機能を妨げます。

<?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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート