[英]Error: SQLSTATE[42000]: Syntax error or access violation: 1064 - PHP MYSQL
[英]PHP exception: SQLSTATE[42000]: Syntax error or access violation: 1064
我有一個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
LIMIT 1”(第3行)(長度= 232)附近使用
對於可能出什么問題的任何建議,我將不勝感激!
更改
ORDER BY DESC field5
進入
ORDER BY field5 DESC
請參考MySQL手冊 ,了解選擇查詢的語法。 您犯了一個簡單的錯誤,即查詢在語法上是錯誤的 。 您只能通過首先引用該列來對其進行排序:
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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.