所以我试图做一个LIKE查询并获得一些结果,但我传递的文本有一些特殊的字符,打破了查询。
如果我们假设文本是这样的:
var test `select` `query`="$newval + "dsadsa$ ? "$test ?
并且我在列中的文本与VARCHAR完全相同
然后执行查询
SELECT * FROM table WHERE column LIKE '%$text%'
说没有行要返回。
编辑:当我在数据库中发布数据时,我只是使用mysql真正的转义字符串,当我显示文本,我点击搜索我把文本放在htmlentities然后我从0到50减去它并进行搜索查询
您可以使用mysql_real_escape_string()来转义字符串中的任何特殊字符。
尽量避免将变量直接写入字符串,这可能会导致问题(+它真的不好):
mysql_query("SELECT * FROM table WHERE column LIKE '%" . $text . "%'");
当然要确保$text
变量真的是正确的(echo $text
),字符转义也可能导致问题,当然还有许多其他因素导致问题(这取决于你的应用程序的架构 - 你在哪里使用$text
)。