2014-11-24 116 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')";