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,做搜索查询
答
您可以使用mysql_real_escape_string(),它将转义字符串中的任何特殊字符。
答
尽量避免写变量直接转换为字符串,它可能会导致问题(+这真的不是很好):
mysql_query("SELECT * FROM table WHERE column LIKE '%" . $text . "%'");
当然确保$text
变量确实是正确的(echo $text
),字符转义也可能导致问题,当然也可能有很多其他的东西导致问题(这取决于你的应用程序的体系结构 - 你在$text
工作的地方)。
请问您可以发布整段代码吗?这个问题很模糊。 – AlexanderMP 2011-06-09 22:59:03
和select语句中,它应该是LIKE'%$ test'吗? – ldg 2011-06-09 23:00:31
如果是这样的话,你是否严格要求'$ test'出现在字符串的末尾?如上所述,上述内容不会返回任何内容。但你应该看到一个结果,如果你使用LIKE'%$ test%'insead ... – 2011-06-09 23:04:30