効率的かつ安全なクエリのための MySQLi のパラメータの利用
PHP データベース プログラミングの領域では、MySQLi インターフェイスを介して MySQL を操作する場合、クエリに動的パラメーターが含まれるシナリオがよく発生します。次の例を考えてみましょう。
SELECT $fields FROM $table WHERE $this = $that AND $this2 = $that2
SQL 文字列に値を挿入してこのようなクエリを手動で構築するには、次のようなことを行います。
$search = array('name' => 'michael', 'age' => 20); $query = "SELECT $fields FROM $table WHERE name = '$search[name]' AND age = '$search[age]'";
ただし、このアプローチでは次のような懸念が生じます。 SQL インジェクションの脆弱性。これに対処するために、MySQLi はパラメータ化されたクエリを使用した堅牢なソリューションを提供します。
パラメータ化されたクエリの威力
パラメータ化されたクエリを使用すると、SQL ステートメント自体とは別にクエリ パラメータを渡すことができます。 。これにより、ユーザー入力を悪用する可能性のある悪意のあるコードの実行が防止され、セキュリティが大幅に強化されます。上記の例のパラメーター化されたクエリは次のようになります。
$db = new mysqli(...); $name = 'michael'; $age = 20; $stmt = $db->prepare("SELECT $fields FROm $table WHERE name = ? AND age = ?"); $stmt->bind_param("si", $name, $age); $stmt->execute(); $stmt->close();
詳細な説明
追加のヒント
以上がMySQLi のパラメータ化されたクエリは、PHP アプリケーションを SQL インジェクションの脆弱性からどのように保護できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。