sql >> データベース >  >> RDS >> Mysql

PDO / MySQLのプリペアドステートメントは文字をエスケープしていませんか?

    プリペアドステートメントは何もエスケープしません。ステートメントを準備すると、クエリはプリコンパイルされるため、プレースホルダー(?のみが必要です。 )入力する必要があります。プリコンパイルされたクエリのSQLを変更する方法がないため、エスケープする必要はありません。

    これを修正するには、%をエスケープします および_ 手動で。

    追加:

    ちょっとした常識的な推論:あなたの場合、ユーザーが%を入力したとき 検索ボックスに、$search 変数に文字列%%%が含まれています 。 MySQLはどの%をどのように知るのでしょうか それは逃げるべきであり、どちらを放っておくべきですか?



    1. SQL連絡先からの最新の写真(連絡先ごとにグループ化)

    2. mySQL情報を分割してHTML列に表示する方法

    3. Sphinx警告プリロード:開くことができませんでした

    4. 修正:SQL Server(およびSQL Edge)の「リカバリモデルがSIMPLEである間は、ステートメントBACKUPLOGは許可されません」