当使用数字作为模式时,我遇到了意想不到的查询结果。查询如下所示:
SELECT Code FROM table WHERE Code LIKE '%xxx%'
当xxx是字母时一切正常,但当它们是数字时,远程PHP返回的查询是错误的。开头的%nn似乎被解释为ASCII码。
的例子:
SELECT Code FROM table WHERE Code LIKE '%26F%'
返回为:SELECT Code FROM table WHERE Code LIKE '&F%'
Javascript代码示例:find = "26F";
srch = "Code LIKE '%" + find + "%'";
url: "load_searched_record.php?target="+srch;
...
PHP简化代码:
$target = $_GET['target'];
echo $target;
因为我删除了所有的MySql代码进行测试,只留下上面的2行,很明显,问题起源于PHP,但为什么呢?
我应该以同样的方式编码查询吗?如果是,怎么做?由于
请注意PHP文件是UTF-8编码的
这是因为您未能正确地对您放入查询字符串的值进行url编码…(这不是PHP的错误)
您需要在值上使用encodeURIComponent
,然后将其附加到URL:
"load_searched_record.php?target="+encodeURIComponent(srch)