Php 我的sql查询中的语法错误(在重复密钥更新时)

Php 我的sql查询中的语法错误(在重复密钥更新时),php,mysql,Php,Mysql,我的mysql查询有一个问题,我尝试进行重复密钥更新,但我会出错,我不知道为什么,可能是因为我的UPDATE语句出错了。以下是我的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_pro

我的mysql查询有一个问题,我尝试进行重复密钥更新,但我会出错,我不知道为什么,可能是因为我的UPDATE语句出错了。以下是我的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是不安全的!但是我用它来满足我的个人需要

在你的情况下,使用替换语句会更容易些
$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']);

查询中的另一个错误是在INSERT语句中使用WHERE子句


在您的情况下,使用REPLACE语句会更容易

查询中的另一个错误是在INSERT语句中使用WHERE子句



$q3='在重复密钥更新id上插入prestashop.ps_product_supplier(产品供应商参考、产品供应商url)值(“%s”、““%s”)\u product=%d'$q3=“在重复密钥更新id上插入prestashop.ps_product_supplier(产品供应商参考、产品供应商url)值(“%s”、““%s”)\u product=%d';感谢您的所有回答,但我仍然得到一个语法错误,这可能是因为某些产品供应商参考/url为空,但它们有一个id。并且replace也给了我一个语法错误。这是我的数据库,感谢您的所有回答,但我仍然得到一个语法错误,这可能是因为某些产品供应商参考/url为空,但它们有一个id。并且replace也给了我一个语法错误。这我的数据库我仍然得到一个语法错误,这可能发生,因为一些产品供应商参考/url是空的,但他们有一个id。和也替换给了我一个语法错误。这是我的数据库imgur.com/a/2Nhn8i在replace语句中出现语法错误,请尝试编辑的语句(删除where子句),而且INSERT INTO语句没有where子句,如果您下次发布语法错误,会更容易。我仍然收到语法错误,发生这种情况的原因可能是某些产品供应商参考/url为空,但它们有id。而且replace也给了我一个语法错误。这是我的数据库imgur.com/a/2Nhn8i在replace语句中出现语法错误,请尝试编辑的语句(删除where子句),而且INSERT INTO语句没有where子句,如果您下次发布语法错误,会更容易。我仍然收到语法错误,发生这种情况的原因可能是某些产品供应商参考/url为空,但它们有id。而且replace也给了我一个语法错误。这是我的数据库imgur.com/a/2nhn8,以phpmyadmin为例运行查询,并使用一些演示值,是否得到错误@SomepubI做了,我发现替换或输入工作,因为我有另一个sql列:id\u supplier,错误是:“字段'id\u supplier'没有默认值”,我想我只需要用id替换相同的id\u supplier,我有点笨,因为我有其他列,当然替换和插入不工作,但我现在的问题是,如何替换/插入所需的值,并在其他文件中保持相同的值columns@Somepub在所有行都已存在且具有唯一键或主键后,使用简单的
更新
:)。只需更新所需的字段。我仍然收到一个语法错误,这可能是因为某些产品供应商参考/url为空,但它们有一个id。而且replace也给了我一个语法错误。这是我的数据库imgur.com/a/2nhn8,以phpmyadmin为例运行查询,并使用一些演示值,是否得到错误@SomepubI做了,我发现替换或输入工作,因为我有另一个sql列:id\u supplier,错误是:“字段'id\u supplier'没有默认值”,我想我只需要用id替换相同的id\u supplier,我有点笨,因为我有其他列,当然替换和插入不工作,但我现在的问题是,如何替换/插入所需的值,并在其他文件中保持相同的值columns@Somepub在所有行都已存在且具有唯一键或主键后,使用简单的
更新
:)。只需更新所需的字段。
$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']);
$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']);
$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']);