1

列に文字列が含まれています 父の日 父のクエリのみを検索すると結果が表示されます 父の日ですが、文字列を入力すると 父の日 父の日

結果表示なし

私のクエリは

select * from temp where title like '%Father's%' datatype = 0

select * from temp where title like '%Father''s%' datatype = 0

select * from temp where title like '%Father\'s%' datatype = 0
4

3 に答える 3

1

mysql_real_escape_stringを使用して特殊文字をエスケープします。

$search = mysql_real_escape_string($search);

PDO の方法を使用する:

$stmt = $db->prepare("SELECT * FROM  `temp` WHERE  `title` LIKE ?");
$stmt->bindValue(1, "%$search%", PDO::PARAM_STR);
$stmt->execute()

注: 新しいコードでは関数を使用しないでくださいmysql_*。それらはもはや保守されておらず、公式に非推奨です赤いボックスが見えますか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事はどちらを使用するかを決めるのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2013-04-26T07:07:27.770 に答える
0

クエリ

  1. 父の後に引用を閉じ、クエリを中断します
  2. 同じ問題
  3. パターン'内でエスケープすることはできません(およびのみエスケープされます)LIKE%_

正しいクエリは次のようになります。

select * from temp where title like "%Father's%" AND datatype = 0
于 2013-04-26T07:00:38.563 に答える
0

これを使用すると、これは確実に機能します:

select * from temp where title like "%Father\\'s%" datatype = 0;

これは機能します。

そして、あなたの知識のために、それをデータベースに挿入するときはいつでも、スラッシュを避けるために常にストリップスラッシュ機能を使用することをお勧めします

于 2013-04-26T07:37:21.950 に答える