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

时间:2016-08-01 09:49:20

标签: php mysql pdo

我有一个php pdo脚本,我想在“field5”中选择编号最高的记录(来自MySQL数据库中的表)。我还有一些其他限制,见下文:

 $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");

我在try语句中有很多代码,而在catch语句中我使用

var_dump($ex->getMessage());

从异常$ ex。

获取异常消息

现在,当我执行代码时,我收到以下异常消息:

  

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

我对任何可能出错的建议表示感谢!

2 个答案:

答案 0 :(得分:0)

更改

ORDER BY DESC field5

ORDER BY field5 DESC

答案 1 :(得分:0)

请参考MySQL manual以获取select query的语法。您犯了一个简单的错误,即查询语法错误。您最初只能通过引用来订购列:

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");