2017-02-14 68 views
1

我有我的mysql查詢的問題,我嘗試做ON DUPLICATE KEY UPDATE,但我得到錯誤,我不知道爲什麼,也許是因爲我用我的更新聲明做錯了。這裏是我的sql代碼:在我的sql查詢中的語法錯誤(在重複密鑰更新)

$q3='INSERT INTO prestashop.ps_product_supplier (product_supplier_reference,product_supplier_url) values ("%s","%s") WHERE id_product=%d ON DUPLICATE KEY UPDATE prestashop.ps_product_supplier SET product_supplier_reference= "%s", product_supplier_url= "%s" WHERE id_product = %d'; 

$sql3 = sprintf($q3, $_REQUEST['tki'],$_REQUEST['tki2'], $_REQUEST['id']); 

我知道它的不安全的方法使用$ sql3那樣!但是我用它爲我的個人需求

+0

$ q3 ='插入到prestashop.ps_product_supplier(product_supplier_reference,product_supplier_url)值(「%s」,「%s」)ON DUPLICATE KEY UPDATE id_product =%d'; – JYoThI

回答

0
$q3='INSERT INTO prestashop.ps_product_supplier (id_product,product_supplier_reference,product_supplier_url) values (%d,"%s","%s") ON DUPLICATE KEY UPDATE prestashop.ps_product_supplier SET product_supplier_reference= "%s", product_supplier_url= "%s" WHERE id_product=%d'; 

$sql3 = sprintf($q3, $_REQUEST['tki'],$_REQUEST['tki2'], $_REQUEST['id']); 
+0

我仍然收到語法錯誤,這可能會發生,因爲一些product_supplier_reference/url是空值,但他們有一個ID。而且替換也給我一個語法錯誤。這是我的數據庫imgur.com/a/2Nhn8 – Somepub

+0

運行查詢,因爲它是從phpmyadmin例如,並使用一些演示值,你會得到錯誤? @Somepub –

+0

我做了,我發現替換或輸入工作,因爲我有另一個sql列:id_supplier和錯誤是:「字段'id_supplier'沒有默認值」,我想我只是需要替換相同的id_supplier由id – Somepub

0
$q3='INSERT INTO prestashop.ps_product_supplier (product_supplier_reference,product_supplier_url) values ("%s","%s") WHERE id_product=%d ON DUPLICATE KEY UPDATE prestashop.ps_product_supplier SET product_supplier_reference= "%s", product_supplier_url= "%s"'; 

$sql3 = sprintf($q3, $_REQUEST['tki'],$_REQUEST['tki2'], $_REQUEST['id'],$_REQUEST['tki'],$_REQUEST['tki2']); 
+0

對不起,先生我錯誤地編輯了你的答案... –

+0

謝謝你所有的答案,但我仍然得到一個語法錯誤,這可能會發生,因爲一些product_supplier_reference/url是空值,但他們有一個ID。而且替換也給我一個語法錯誤。這我的數據庫http://imgur.com/a/2Nhn8 – Somepub

0

在你的情況下,它會更容易使用REPLACE語句 https://dev.mysql.com/doc/refman/5.7/en/replace.html

$q3='REPLACE INTO prestashop.ps_product_supplier (id_product,product_supplier_reference,product_supplier_url) values (%d,"%s","%s")'; 
$sql3 = sprintf($q3,$_REQUEST['id'], $_REQUEST['tki'],$_REQUEST['tki2']); 

另外,在查詢中的錯誤是使用INSERT語句中的WHERE子句 https://dev.mysql.com/doc/refman/5.7/en/insert.html

$q3='INSERT INTO prestashop.ps_product_supplier (id_product,product_supplier_reference,product_supplier_url) values (%d,"%s","%s") ON DUPLICATE KEY UPDATE product_supplier_reference= "%s", product_supplier_url= "%s"'; 
$sql3 = sprintf($q3,$_REQUEST['id'], $_REQUEST['tki'],$_REQUEST['tki2'],$_REQUEST['tki'],$_REQUEST['tki2']); 
+0

我仍然收到語法錯誤,這可能會發生,因爲一些product_supplier_reference/url是空值,但他們有一個ID。而且替換也給我一個語法錯誤。這是我的數據庫imgur.com/a/2Nhn8 – Somepub

+0

我在replace語句中有一個語法錯誤,請嘗試編輯的語句(刪除where子句),同時INSERT INTO語句沒有WHERE子句,它會更容易下一個如果你發佈你的語法錯誤的話。 – knetsi