2012-03-03 304 views
2

我有幾行代碼應該做一個關於在Opencart的1.4.9的優惠券報告,但我不能在這個錯誤得到:奇怪的錯誤

You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near 
'order where coupon_id = 16' at line 1. 
$getcouponinfo1 = mysql_query("select * from order where coupon_id = $coupon_id") 
     or die(mysql_error()); 

其餘代碼可以找到here

回答

7

order是SQL關鍵字,你需要引用該表名。

select * from `order` where ... 
+1

看看這個鏈接。 sql中有一些保留字。 http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html所以你需要關注@Mat的回答 – 2012-03-03 13:47:16

2

「order」是一個MySQL保留字......如果你需要調用你的表「order」,那麼你需要在你的sql查詢中用反引號(`)括起來。

你的錯誤信息是沒有關係的,你最初發布(編輯你的問題之前)的查詢,但該查詢:

select * from order where coupon_id = $coupon_id 

和下面的查詢您概括訂單的價值

+0

(OP沒有發佈任何查詢,我編輯它並搞砸了第一個複製/粘貼) – Mat 2012-03-03 13:54:10

+0

然後對OP進行道歉,現在它是正確的查詢,因此沒有造成任何損害 – 2012-03-03 13:55:12

-1

因爲order是一個保留字,它是不是一個好名字表

+0

沒有真正回答這個問題,是嗎? – 2012-03-04 09:26:36

+0

@PranavHosangadi所以,最好是投票刪除這個答案,而不是編輯它使整個問題活躍,污染清單? – 2012-03-04 09:38:09

2

order是保留關鍵字。

您應該改用`order`

+2

反引號(')不是雙引號(「) – 2012-03-03 13:42:02

+0

@MarkBaker我知道我但是反引號是保留在SO中以突出文本,它只是突出顯示它,我先試了一下,但是找不到一個方法來正確地轉義它.... – 2012-03-03 13:48:37

+0

@SergeyBenner:你可以把反引號,但它有點複雜看我的編輯) – Mat 2012-03-03 13:53:01