1

table名前の付いたものtagsがあり、以下のエントリが含まれています。

 ID   Name       Created Date
 10 limit\'s 2013-06-27 05:18:35

クエリを使用して検索したいのですlimit'sが、レコードを検索できませんでした。

私が試したことのために。

'SELECT id FROM tags AS Tag WHERE name = "%'. urlencode($adTag) .'%" LIMIT 0,1'

'SELECT id FROM tags AS Tag WHERE name LIKE "%'. htmlspecialchars($adTag) .'%" LIMIT 0,1'

'SELECT * FROM tags AS Tag WHERE name LIKE "%'. $adTag .'%" OR REPLACE(name,'''','') LIKE "%'. $adTag .'%"'

'SELECT id FROM tags AS Tag WHERE name LIKE "%'. mysql_real_escape_string( stripslashes($adTag)) .'%" LIMIT 0,1'

'SELECT id FROM tags AS Tag WHERE name LIKE "%'. mysql_real_escape_string($adTag) .'%" LIMIT 0,1'

Where$adTagは動的に来て、その値はlimit'sです。上記は試しましたが、どれもうまくいきませんでした。

mysqlを修正できるように、私が間違っていることを教えてください。

ありがとう。

4

4 に答える 4

1

を検索する場合は、テーブルに含めるlimit's必要がありlimit'sます。
したがって、まず最初に、テーブル エントリの誤ったバックスラッシュを取り除きます。

あとはいつも通り

$tag = $db->getOne('SELECT id FROM tags WHERE name = ?s', $adTag);
于 2013-06-27T06:23:49.433 に答える
1

非常に多くのグーグル作業が完了した後、ようやくこれが機能するようになりました。

以下は私にとっての解決策です。

SELECT *
FROM tags
WHERE `name` = 'limit\\''s'
LIMIT 0 , 30

その魅力のように働いた。これが将来他のオタクに役立つことを願っています。

于 2013-06-27T08:02:52.910 に答える
0

データベースを再作成して検索しようとしましたが、結果に表示されるには 2 つの追加スラッシュが必要です。MySQL は最初のスラッシュを自動的にエスケープすると思います。

addslashes(addslashes($adTag));
于 2013-06-27T06:23:42.863 に答える
0

これを試して..

$sql = "SELECT id FROM tags AS Tag WHERE name LIKE %". mysql_real_escape_string( stripslashes(urldecode($adTag))) ."% LIMIT 0,1
于 2013-06-27T06:24:27.697 に答える