PHP例外:SQLSTATE [42000]:语法错误或访问冲突:1064

问题描述:

我有一个php pdo脚本,我想从“field5”中选择记录(从MySQL数据库中的表)。我也有一些其他的收缩,见下图:PHP例外:SQLSTATE [42000]:语法错误或访问冲突:1064

$stmt=$db->query("SELECT `field1`,`field2` FROM ".$tablename." WHERE 
`field3`!=".$variable1." AND `field3`!=".$variable2." AND 
`field4`='xx' AND `field5`<".$variable3." ORDER BY DESC `field5` LIMIT 
1"); 

我有几乎所有尝试语句中的代码,并在catch语句我用

var_dump($ex->getMessage()); 

获得异常消息从例外$ ex。

现在,当我执行的代码,我得到下面的异常消息:

“SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法错误 ;检查对应于您 MySQL服务器版本正确的语法使用近“DESC field5 LIMIT 1”在第3' 行手册(长度= 232)

我会用在任何意见感谢什么可能是错的!

+0

哦,上帝,请,如果你已经在使用PDO ... – naththedeveloper

变化

ORDER BY DESC field5 

ORDER BY field5 DESC 
+0

使用准备好的语句我觉得现在这么愚蠢。 。 谢谢! – kinzai

请参阅该MySQL manual的选择查询的语法。你犯了一个简单的错误,那就是,查询是句法错误。您只能通过先引用它命令列:

ORDER BY '{Column-Name}'

,然后只可以定义如何可以在ASC或DESC排序。

ORDER BY '{Column-Name}' [ASC|DESC]

所以,你必须更改查询如下所示:

$stmt=$db->query("SELECT `field1`,`field2` FROM ".$tablename." WHERE 
`field3`!=".$variable1." AND `field3`!=".$variable2." AND 
`field4`='xx' AND `field5`<".$variable3." ORDER BY `field5` DESC 
LIMIT 1");