Php mysql替换为集合语法覆盖所有字段
我有以下疑问:Php mysql替换为集合语法覆盖所有字段,php,mysql,Php,Mysql,我有以下疑问: REPLACE INTO `oxarticles` SET OXID = '10-1010', oxartnum = '10-1010', oxtitle = 'Dummy', oxprice = '10.000000', oxstock = '100', importstatus = 1" 这项工作正如预期的那样,但我没有指定的字段只是被'/空字符串覆盖。从我读到的内容来看,这个语法是否应该像UPDATE-
REPLACE INTO `oxarticles`
SET
OXID = '10-1010',
oxartnum = '10-1010',
oxtitle = 'Dummy',
oxprice = '10.000000',
oxstock = '100',
importstatus = 1"
这项工作正如预期的那样,但我没有指定的字段只是被'
/空字符串覆盖。从我读到的内容来看,这个语法是否应该像UPDATE
-命令一样工作
我错过什么了吗?如何防止字段被替换为“”
编辑1
为了澄清,我不能只使用UPDATE
。我在每次运行前将标志(importstatus)设置为0,并在导入期间将其设置为1。导入完成后,我将删除所有仍处于状态0的项目
//为了便于竞赛,以下是PHP代码片段:
while (!feof($this->handle))
{
$row = fgetcsv($this->handle, 0, ";");
$sSql = "REPLACE INTO oxarticles SET "
. " OXID = '" . $row[0] . "', "
. " oxartnum = '" . $row[0] . "', "
. " oxtitle = '" . $row[1] . "', "
. " oxprice = '" . str_replace(",", ".", $row[4]) . "', "
. " oxstock = '" . str_replace(",", ".", $row[5]) . "', "
. " importstatus = 1";
// $sSql = "UPDATE oxarticles SET oxtitle ='" . $row[1] . "', oxprice='" . $row[4] . "', oxstock='" . $row[5] . "' WHERE oxartnum ='".$row[0]."'";
$this->db->execute($sSql);
}
从mysql文档中: “替换”的工作方式与“插入”完全相同,只是 表与主键或唯一键的新行具有相同的值 索引时,在插入新行之前删除旧行。看见 第13.2.5节,“插入语法”
换句话说,该行被删除然后插入,因此旧值不会保持不变。也许您可以先选择原始行,并在适当的地方反馈这些值。如果您没有为字段提供数据,则查询将把旧数据替换为新数据。如果您不想丢失数据,只想更新字段,在重复密钥更新时使用
If did't found any match it will insert new row
If found it will replace data if provide
在表(id、a、b、c、d、e、f、g)中插入
复制密钥
更新a=a,b=b,c=c,d=d,e=e,f=f,g=g
看来我没注意到。非常感谢。我会尽快接受这个答案:)