2013-08-05 69 views
2

如果執行代碼使用,它顯示了錯誤:權語法近的順序按id DESC LIMIT 1

check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY ID DESC limit 1'

就像下面的例子:

$prevquery = "SELECT * FROM $tbl_name WHERE ID < $ID ORDER BY ID DESC limit 1"; 
$prevresult= mysql_query($prevquery) or die(mysql_error()); 

while($prevrow = mysql_fetch_row($prevresult)) 
{ 

    displaying the previous ID:- 
    $prevID = $prevrow['ID']; 
} 

應該怎樣一個做防止這個?

+0

什麼是$ tbl_name和$ ID? – mvp

+0

請向我們展示'$ prevquery'包含的內容。 – Barmar

回答

1

試試這個

$prevquery = "SELECT * FROM $tbl_name WHERE ID < '$ID' ORDER BY ID DESC limit 1"; 

如果不工作,然後回聲查詢並在MySQL的phpmyadmin面板運行

echo $prevquery = "SELECT * FROM $tbl_name WHERE ID < '$ID' ORDER BY ID DESC limit 1"; 
+0

當我回聲和C ...它顯示「查詢是空的」,雖然表名和一切都是正確的 – shalini

+0

當我回聲$ prevquery語句...它顯示查詢是空的.. – shalini

0

這應該工作

$ prevquery =「SELECT * FROM $ tbl_name WHERE ID <'$ ID'ORDER BY ID DESC limit 1「;

$ prevresult = mysql_query($ prevquery)或die(mysql_error());

而($ prevrow =和mysql_fetch_row($ prevresult)) {

顯示先前ID: - $ prevID = $ prevrow [ 'ID']; }

+0

: - 當我回聲$ prevquery語句...它顯示查詢是空的.. – shalini

0

附加的註釋,每當我看到形式的一般錯誤...

check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY ID DESC limit 1'

看「近」幾乎總是指向SQL語句只是之前到一個問題的提示錯誤消息中顯示的單引號字符串開始。

因此,在這種情況下,錯誤引用您的SQL字符串以'ORDER BY'開始,該字符串立即以$ ID開頭。我敢打賭$ ID沒有定義(並且最終在你的sql字符串中是空白的),或者$ ID不是正確的數據類型。

無論哪種方式,正如其他人所建議的,您需要echo或記錄您的sql字符串以查看實際正在查詢的內容。

0

你不能用戶'在哪裏'與限制。取而代之的是使用訂單ID desc LIMIT 1