タイトルが示すように、bind_param() を使用するときにユーザー入力をエスケープする必要がありますか、それとも内部で行われますか?
ありがとうございました。
タイトルが示すように、bind_param() を使用するときにユーザー入力をエスケープする必要がありますか、それとも内部で行われますか?
ありがとうございました。
いいえ、パラメーターをバインドするときに SQL インジェクションから保護するためにデータをエスケープする必要はありません。
ただし、これにより、上記のデータの検証が免除されるわけではありません。
パラメーターをバインドする場合、(内部的またはその他の方法で) エスケープは実行されません。SQL ステートメントはパラメーター プレースホルダーを使用して準備され、実行時にこれらの値が渡されます。
データベースはパラメータが何であるかを認識しており、SQL 値の補間とは対照的に、パラメータを適切に処理します。
いいえ。
これを引用するには
http://mysql.lamphost.net/tech-resources/articles/4.1/prepared-statements.html
「通常、アドホック クエリを処理する場合、ユーザーから受け取ったデータを処理するときは非常に注意する必要があります。これには、一重引用符、二重引用符など、必要なすべての問題文字をエスケープする関数を使用する必要があります。 、およびバックスラッシュ文字。準備されたステートメントを処理する場合、これは不要です。 データの分離により、MySQL はこれらの文字を自動的に考慮することができ、特別な関数を使用してエスケープする必要はありません。"