撇号喜欢和平等条款不起作用

时间:2013-06-27 06:12:18

标签: php mysql mysql-real-escape-string apostrophe

我有一个名为table的{​​{1}},其中包含的条目如下所示。

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。以上是尝试但没有一个工作。

让我知道我做错了什么,所以我可以纠正mysql。

感谢。

4 个答案:

答案 0 :(得分:1)

如果您要搜索limit's,则表格中必须有limit's 所以,首先要摆脱表条目中的错误反斜杠。

剩下的就像往常一样

$tag = $db->getOne('SELECT id FROM tags WHERE name = ?s', $adTag);

答案 1 :(得分:1)

经过如此多的谷歌工作后,我终于开始工作了。

以下是我的解决方案。

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

它的功效就像魅力一样。希望这将有助于其他极客。

答案 2 :(得分:0)

我尝试重新创建数据库并进行搜索,结果中需要2个addslashes才能显示。我认为MySQL会自动逃避第一个斜杠。

addslashes(addslashes($adTag));

答案 3 :(得分:0)

试试这个..

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