別の頭の体操。
これは通常の「しかし、アポストロフィがクエリを壊している」ということではありません。エスケープとサニタイズについてはすべて知っているので、それも正しく理解します。
多くのものが「Assassin's」や「Babe's」などの名前でデータベースに保存され、最終的には「Assassin\'s」および「Babe\'s」になります。回復は良いですが、テキストによる検索は... 面倒です.
LIKE "%Babe\'s%" には結果がありません。"%Babe\\'s" には結果がありません。"%Babe\''s" には結果がありません。
しかし、サーバーに直接アクセスすると、すべて結果が生成されます。
つまり、まったく編集されていない SAME クエリは、MySQL エンジンで直接機能しますが、php の mysql API 経由で送信されると、一致する結果は生成されません。
これを引き起こす可能性のあるアイデアはありますか?(スラッシュの量などを100回確認しましたが、文字セットの問題はありますか?」
多くの多くの多くの多くの前もって感謝します。
編集:
私は自分自身をより明確にするほうがよいと思います:
"SELECT title FROM games WHERE title LIKE "%assassin\\\'s%";
(SQL はアポストロフィーをエスケープし、スラッシュの 1 つが格納されたスラッシュに変わるため、この例では「Assassin\'s Creed」を探しているため)
edit2:これは、サニタイズが不十分なために実際のデータベースでエスケープされたことが原因であることがわかりました。現在、データベースと入力メソッドをクリーンアップしようとしています。
edit3:魔法の引用符が何らかの形でオンになっているようです...オフにされたことを誓います! しかし、それだけではありませんでした。このサイト用に用意されている DB ラッパーには、問題の原因となったクリーン イベントとプレクリーンがあります。それは現在修正されており、現在、スクリプトを実行して(うまくいけば)データベースをクレンジングしています...