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'

哪里$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 回答