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)
我会用在任何意见感谢什么可能是错的!
答
请参阅该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");
哦,上帝,请,如果你已经在使用PDO ... – naththedeveloper