我对我的mysql查询语法有疑问
当我使用这个
时$result = $db->executeQuery('SELECT * FROM `person` WHERE '.$searchOn.' LIKE "%'.$critera.'%" ');
查询返回结果。
但是在使用此查询时
$result = $db->executeQuery('SELECT * FROM `person` WHERE "'.$searchOn.'" LIKE "%'.$critera.'%" ');
查询没有返回任何内容......
'。$ searchOn'之间有什么区别?和“'。$ searchOn。'”?
答案 0 :(得分:1)
不应使用单引号或双引号引用列名。
你在where子句中的列名称中有双引号。
$result = $db->executeQuery('SELECT * FROM `person`
WHERE "'.$searchOn.'" LIKE "%'.$critera.'%" ');
最终查询: -
SELECT * FROM `person` WHERE "field_name" LIKE ...
这导致mysql错误。
你可以在``反引号中包含列名,以避免再次导致mysql保留字的奇怪错误。
修改强>
您的查询应该是这样的。
$result = $db->executeQuery('SELECT * FROM `person`
WHERE `'.$searchOn.'` LIKE "%'.$critera.'%" ');
答案 1 :(得分:0)
列名不能是双引号。如果要使用引号,请使用您用于表名的引号。
答案 2 :(得分:0)
我认为这是由错误使用单引号和双引号引起的。
尝试:
$result = $db->executeQuery("SELECT * FROM person WHERE ".$searchOn." LIKE %".$critera."%");
或者:
$result = $db->executeQuery("SELECT * FROM person WHERE $searchOn LIKE %$critera%");
两者都应该有用......
基本上就像你在PHP中连接字符串和变量一样......