2014-11-24 90 views
0

我试图使用PHP的“INSERT INTO”功能,但由于某些未知原因,它无法正常工作。PHP“INSERT INTO”无法正常工作

这里是代码的主要部分 -

$sql = "INSERT INTO order (t_from, t_to, t_date, t_time, t_payment, t_sn, t_u_email) 
     VALUES ('a', 'b', 'c', 'd', 'e', 'f', 'g')"; 

有什么不对呢?

请帮帮忙!

谢谢,

+0

试着把'围绕你的列名! – Rizier123 2014-11-24 11:53:24

+6

'order'是一个MySQL和SQL保留字。这是一个非常糟糕的名字。如果您必须使用它,请用反引号将其包围。我认为这是一个印刷错误,并投票结束这些问题。 – 2014-11-24 11:53:39

回答

5

order被一个MySQL保留关键字。

http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords-5-0.html

要么改变order别的东西,

或把反引号周围order

$sql = "INSERT INTO `order` (t_from, t_to, t_date, t_time, t_payment, t_sn, t_u_email) 
     VALUES ('a', 'b', 'c', 'd', 'e', 'f', 'g')"; 

另一个解决方案是在表名前面使用数据库名称。

$sql = "INSERT INTO DB_NAME.order (t_from, t_to, t_date, t_time, t_payment, t_sn, t_u_email) 
      VALUES ('a', 'b', 'c', 'd', 'e', 'f', 'g')"; 
+1

你也可以使用'dbname.order'。我认为它也适用。 – wayzz 2014-11-24 11:56:36

+0

知道了!谢谢, – 2014-11-24 11:57:21

+0

@AshishGogna,如果我的答案适合您,请接受它作为解决方案。 – Pupil 2014-11-24 11:59:16

0

问题是你不能命名一个表像为了。这是一个保留的MySQL关键字。

在您的情况下,您应该将您的表格重命名为订单。这是很多黄油,因为您的表中有多个订单,并且您已经解决了问题。

$sql = "INSERT INTO orders (t_from, t_to, t_date, t_time, t_payment, t_sn, t_u_email) 
     VALUES ('a', 'b', 'c', 'd', 'e', 'f', 'g')";