错误的mysql查询语法?

时间:2011-04-11 09:51:22

标签: mysql syntax

我对我的mysql查询语法有疑问

当我使用这个

$result = $db->executeQuery('SELECT * FROM `person`  WHERE '.$searchOn.' LIKE "%'.$critera.'%"  ');

查询返回结果。

但是在使用此查询时

$result = $db->executeQuery('SELECT * FROM `person`  WHERE "'.$searchOn.'" LIKE "%'.$critera.'%"  ');

查询没有返回任何内容......

'。$ searchOn'之间有什么区别?和“'。$ searchOn。'”?

3 个答案:

答案 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中连接字符串和变量一样......