簡體   English   中英

PHP異常:SQLSTATE [42000]:語法錯誤或訪問沖突:1064

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM