パラメータ化されたクエリとは何ですか。そのようなクエリの例は、PHP and MySQL?
パラメーター化されたクエリ(prepared statementとも呼ばれる)は、SQLステートメントをプリコンパイルする手段であるため、指定する必要があるのは「パラメーター"("変数 "を考えてください)実行するためにステートメントに挿入する必要があります。 SQLインジェクション攻撃 を防ぐ手段として一般的に使用されます。
これらの詳細については、PHPの PDOページ (PDOはデータベース抽象化レイヤー)で読むことができますが、mysqliデータベースインターフェイスを使用している場合は、これらを利用することもできます( prepare documentation)。
これは、それが何であり、どのように機能するかを明確かつ簡潔に説明したものです。 パラメータ化の使用方法と理由
不可欠なプロセスには、サーバーがパラメーターなしで要求を前処理することが含まれるため、サーバーはクエリの種類を認識します。したがって、たとえば、SELECTクエリはSELECTクエリにすぎず、パラメータ(リクエスト変数)によって連結してSELECT/DROPまたは他のMySqlインジェクションにすることはできません。代わりに、注入データはパラメーターフィールドの単なる文字列データになります。
パラメーター化されたクエリは、プレースホルダーがパラメーターに使用され、実行時にパラメーター値が提供されるクエリです。
パラメータ化クエリを使用する理由
このステートメントは、同じSQLステートメントが高効率で繰り返し実行されるデータベースシステムの機能の1つです。準備されたステートメントは、テンプレートの一種であり、さまざまなパラメーターでアプリケーションによって使用されます。 参考記事
データベースシステムは、同じ種類のSQLステートメントに対して何度も解析、コンパイル、最適化を行うことなく、同じSQLステートメントを実行できます。
MySQLで準備済みステートメントを作成または作成できますが、準備済みステートメントAPIを介したバイナリプロトコルの方が優れているため、これは効率的な方法ではありません。
ただし、作成することはできますが、SQLで直接作成できる他のプログラミングは必要ありません。 MySQLクライアントプログラムの準備済みステートメントを使用できます。また、動的SQLアプローチのストアドプロシージャで準備済みステートメントを使用できます。
MySQLで準備済みステートメントを作成します。 参照はこの記事から取得されます
PREPARE TestStmt FROM
'SELECT * FROM Test
WHERE TestNumber=?';
PHPコードを使用して、APIを介して準備済みステートメントを管理したり、JDBCレベルで管理したりできます。