2017-02-14 1 views
1

Ich habe ein Problem mit meiner MySQL-Abfrage, ich versuche, das ON DUPLICATE KEY UPDATE zu tun, aber Ill Fehler bekommen, und ich weiß nicht warum, vielleicht weil ich bin mache es falsch mit meiner Update-Anweisung. Hier ist mein Sql-Code:Syntaxfehler in meiner SQL-Abfrage (ON DUPLICATE KEY UPDATE)

$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']); 

Ich kenne seine unsichere Methode, $ sql3 so zu verwenden! Aber der Einsatz Im es für meine persönlichen Bedürfnisse

+0

$ q3 = 'INSERT IN prestashop.ps_product_supplier (product_supplier_reference, product_supplier_url) -Werte ("% s", "% s") ON DUPLICATE KEY UPDATE id_product =% d'; – JYoThI

Antwort

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

Ich erhalte immer noch einen Syntaxfehler, dies kann auftreten, weil einige product_supplier_reference/url Nullen sind, aber sie haben eine ID. Und auch Ersatz gab mir auch einen Syntaxfehler. Diese meine Datenbank imgur.com/a/2Nhn8 – Somepub

+0

die Abfrage ausführen, wie es von phpmyadmin zum Beispiel ist und einige Demo-Werte verwenden, erhalten Sie Fehler? @Somepub –

+0

Ich tat, und ich fand heraus ersetzen noch Eingabe funktioniert, weil ich eine andere sql-Spalte habe: id_supplier und der Fehler ist: "Feld 'id_supplier' hat keinen Standardwert" und ich denke, ich muss nur Ersetze den gleichen id_supplier durch 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

sorry sir Ich habe Ihre Antwort versehentlich geändert ... –

+0

Vielen Dank für Ihre alle Antworten, aber ich bekomme immer noch einen Syntaxfehler, dies kann auftreten, weil einige Product_supplier_reference/URL NULL sind, aber sie haben eine ID. Und auch Ersatz gab mir auch einen Syntaxfehler. Diese meine Datenbank http://imgur.com/a/2Nhn8 – Somepub

0

In Ihrem Fall wäre es einfacher, die REPLACE-Anweisung verwenden 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']); 

Auch der Fehler in der Abfrage ist, dass Sie die Verwendung WHERE-Klausel in INSERT-Anweisung 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

Ich bekomme immer noch einen Syntaxfehler, dies kann auftreten, weil einige product_supplier_reference/url Nullen sind, aber sie haben eine ID. Und auch Ersatz gab mir auch einen Syntaxfehler. Diese meine Datenbank imgur.com/a/2Nhn8 – Somepub

+0

Ich hatte einen Syntaxfehler in der Ersetzung-Anweisung, bitte versuchen Sie die bearbeitete (entfernt die WHERE-Klausel), auch die INSERT INTO-Anweisung hat keine WHERE-Klausel, es wäre einfacher als nächstes Zeit, wenn Sie Ihre Syntaxfehler posten. – knetsi

Verwandte Themen