php mysql与特殊字符LIKE无法正常工作

问题描述:

所以我想做一个LIKE查询并获得一些结果,但我传递的文本有一些特殊字符,打破查询。php mysql与特殊字符LIKE无法正常工作

如果我们假设文字是这样的:

var test `select` `query`="$newval + "dsadsa$ ? "$test ? 

,我也有完全相同

一列VARCHAR

内相同的文本,然后执行查询

SELECT * FROM table WHERE column LIKE '%$text%' 

表示没有要返回的行。

编辑:当我发布的数据库里面的数据我简单地使用MySQL的真正转义字符串,当我表现出在哪里点击搜索,我把ヶ辆上的文字 的文本,然后我SUBSTR从它0到50,做搜索查询

+0

请问您可以发布整段代码吗?这个问题很模糊。 – AlexanderMP 2011-06-09 22:59:03

+1

和select语句中,它应该是LIKE'%$ test'吗? – ldg 2011-06-09 23:00:31

+0

如果是这样的话,你是否严格要求'$ test'出现在字符串的末尾?如上所述,上述内容不会返回任何内容。但你应该看到一个结果,如果你使用LIKE'%$ test%'insead ... – 2011-06-09 23:04:30

您可以使用mysql_real_escape_string(),它将转义字符串中的任何特殊字符。

尽量避免写变量直接转换为字符串,它可能会导致问题(+这真的不是很好):

mysql_query("SELECT * FROM table WHERE column LIKE '%" . $text . "%'"); 

当然确保$text变量确实是正确的(echo $text),字符转义也可能导致问题,当然也可能有很多其他的东西导致问题(这取决于你的应用程序的体系结构 - 你在$text工作的地方)。