2012-06-19 95 views
0

我可以運行在phpMyAdmin下面的查詢,但由於某種原因,我得到一個語法錯誤,當我在一個MySQL方法在PHP中運行它:MySQL查詢語法錯誤在SET

INSERT INTO product (model, stock_status_id, image, price, date_available, status, date_added, date_modified) 
VALUES('SP44152', 5, 'data/products/SP44152-1.jpg', '18.04', '2012-06-18', 1, '2012-06-19 00:31:35', '2012-06-19 00:57:01'); 
SET @lastid = LAST_INSERT_ID(); 
INSERT INTO product_description (product_id, language_id, name, Description) 
VALUES(@lastid, 1, 'Product item 1', 'Product Description'); 
INSERT INTO product_reward (product_id, customer_group_id, points) 
VALUES(@lastid, 1, 0); 
INSERT INTO product_to_category (product_id, category_id) 
VALUES(@lastid, 67); 
INSERT INTO product_to_store (product_id, store_id) VALUES(@lastid, 0); 

錯誤代碼我得到:

Error: 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 'SET @lastid = LAST_INSERT_ID(); INSERT INTO product_description (product_i' at line 3 

我試過刪除;從每行的結尾開始,我嘗試刪除字段'status',因爲我知道這也是您可以在MYSQL中使用的東西。互聯網上似乎沒有太多可以幫助確定這一問題的原因。

任何反饋非常歡迎。

+0

爲什麼不使用php的函數mysql_insert_id()? http://es.php.net/manual/en/function.mysql-insert-id.php –

+0

您在第一次查詢時遇到問題,請正確檢查字段名稱,在'status_id'值和狀態'value'中加上引號 – Khurram

+0

謝謝飛達,我確實使用了你的建議。 – Paul

回答

1

mysql_query不喜歡多,分號分隔的語句:

的mysql_query()這是與關聯 服務器發送一個唯一的查詢(多個查詢不 支持)當前活動數據庫指定的link_identifier。

分解查詢到多個查詢和執行它們一個接一個:

mysql_query("INSERT INTO product ...", $conn); 
$lastid = mysql_insert_id($conn); // you can use mysql_insert_id() PHP function 
mysql_query("INSERT INTO product_description ...", $conn); 
mysql_query("INSERT INTO product_reward ...", $conn); 
mysql_query("INSERT INTO product_to_category ...", $conn); 
mysql_query("INSERT INTO product_to_store ...", $conn); 

PS:我建議你看看alternativesmysql_*功能。

+0

謝謝薩爾曼,現貨! – Paul