2012-03-03 306 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