2011-04-11 51 views
1

我有一个关于我的MySQL查询语法错误的mysql查询语法?

问题,当我使用这个

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

查询返回的结果。

但使用此查询

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

查询返回什么...

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

+1

SQL字符串文字用''''不包含''' – Nishant 2011-04-11 09:53:48

回答

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.'%" '); 
+0

Tnx作为回答,但是我的php var是列名称,所以如何在查询中正确设置此语法? – DownDown 2011-04-11 10:03:06

+0

@Down:如果你再次阅读我的答案,你会得到 – 2011-04-11 10:04:40

+0

真的tnx为你回答它的工作。 但是,当我扩展我这样的查询 $ sql =“SELECT * FROM'person' WHERE''。$ searchOn.'' LIKE%'。$ critera。'%ORDER BY''。$ searchOn.'' ASC LIMIT'。$ start。','。$ per_page'“; 它不工作了。 我确定$ start和$ per_page包含值。 你有什么建议吗? – DownDown 2011-04-11 10:19:16

0

columnname不能用双引号引起来。如果您想使用引号,则使用您用于表名称的引号。

0

我认为这是由于单引号和双引号的错误使用引起的。

尝试:

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

或者:

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

双方应该工作...

基本上是这样,当你连接字符串和PHP变量...