php 対話型 mysql では、一重引用符、二重引用符、バックスラッシュなどの一部の文字が SQL ステートメントで特別な意味を持つため、エスケープする必要があります。これらの文字の誤解を避けるために、これらの文字をエスケープする必要があります。同時に、SQL インジェクション攻撃を回避し、攻撃者がデータの削除や機密情報の取得など、アプリケーションの動作を変更する悪意のある SQL コードを実行することを防ぐことができます。
このチュートリアルのオペレーティング システム: Windows 10 システム、php8.1.3 バージョン、Dell G3 コンピューター。
PHP を使用して MySQL と対話する場合、一部の文字は SQL ステートメントで特別な意味を持ちます。これらの文字を誤解しないようにするには、エスケープする必要があります。
一般的に、エスケープする必要がある文字には、一重引用符 (')、二重引用符 (")、およびバックスラッシュ (\) が含まれます。
たとえば、PHP のコードMySQL データベースに接続し、MYSQLI 拡張機能を介してデータを挿入します:
```php $name = "John O'Connor"; $age = 25; mysqli_query($conn, "INSERT INTO users(name, age) VALUES('$name', '$age')"); ```
$name 変数に一重引用符が含まれている場合、SQL ステートメントの実行エラーが発生します。この状況を回避するには、mysqli_real_escape_string() を使用できます。データを変換する関数 エスケープ:
```php $name = "John O'Connor"; $age = 25; $name = mysqli_real_escape_string($conn, $name); mysqli_query($conn, "INSERT INTO users(name, age) VALUES('$name', '$age')"); ```
この関数は、特殊文字を安全な同等の形式に自動的にエスケープします。これで、変数 $name に一重引用符が含まれている場合でも、SQL ステートメントの実行エラーは発生しません。
SQL インジェクション攻撃を回避できるという利点があります。SQL インジェクションは、ユーザー入力の不適切なフィルタリングまたはエスケープを悪用する脆弱性であり、攻撃者が悪意のある SQL コードを実行して、エスケープを使用すると、この攻撃を防ぐことができます。
エスケープの方法は、使用するツールやプログラミング言語によって異なります。mysqli_real_escape_string() 関数は次のとおりです。
<?php // 建立数据库连接 $conn = mysqli_connect("localhost", "username", "password", "database"); // 检查连接是否成功 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } // 要转义的字符串 $string_to_escape = "It's a beautiful day!"; // 对字符串进行转义 $escaped_string = mysqli_real_escape_string($conn, $string_to_escape); // 输出未转义的字符串和转义后的字符串 echo "Original string: " . $string_to_escape . "<br>"; echo "Escaped string: " . $escaped_string; // 关闭数据库连接 mysqli_close($conn); ?>
上の例では、最初に MySQL データベースへの接続を確立しました。次に、エスケープする文字列を宣言し、mysqli_real_escape_string() 関数を使用してエスケープしました。元の文字列とエスケープされた文字列を出力し、データベース接続を閉じます。
mysqli_real_escape_string() 関数を使用する場合、最初のパラメータとして MySQL 接続オブジェクトを渡す必要があることに注意してください。これは、この関数が必要とするためです。正しくエスケープするためにどの MySQL サーバーが使用されているかを知るため。
以上がphp と mysql の対話をエスケープする必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。