Php 如何在Mysql中更新和插入多行
我有一个类似这样的数组Php 如何在Mysql中更新和插入多行,php,mysql,Php,Mysql,我有一个类似这样的数组$feedArray Array ( [0] => array('id'=>'3','val=>'Renta Comerciales'), [1] => array('id'=>'4','val=>'Renta de Casas'), [2] => array('id'=>'6','val=>'Venta de Casas '), [3] => array('id'=
$feedArray
Array ( [0] => array('id'=>'3','val=>'Renta Comerciales'),
[1] => array('id'=>'4','val=>'Renta de Casas'),
[2] => array('id'=>'6','val=>'Venta de Casas '),
[3] => array('id'=>'7','val=>'Venta de Departamentos'),
[4] => array('id'=>'1','val=>'Venta de Terrenos') )
$sql = "INSERT INTO categoriaplantilla (plantilla,categoriafeed,id) values ";
$sqlUpdate = "UPDATE categoriaplantilla ";
foreach($feedArray as $key =>$val)
{
$sqlUpdate . =;
$sql . = ;
}
我必须在一个名为categoriasPlantilla
然后这个表有三列
plantilla ,categoriaFeed, id
我必须检查表的categoriaafeed
列中是否存在数组的val
,然后我必须用数组id更新该id
如果没有,那么我必须在表中插入新行
plantilla的值为11
我知道如何在一个查询中执行多个insert,但如何构建这样一个用于更新的查询
首先,我想做这样的事情
Array ( [0] => array('id'=>'3','val=>'Renta Comerciales'),
[1] => array('id'=>'4','val=>'Renta de Casas'),
[2] => array('id'=>'6','val=>'Venta de Casas '),
[3] => array('id'=>'7','val=>'Venta de Departamentos'),
[4] => array('id'=>'1','val=>'Venta de Terrenos') )
$sql = "INSERT INTO categoriaplantilla (plantilla,categoriafeed,id) values ";
$sqlUpdate = "UPDATE categoriaplantilla ";
foreach($feedArray as $key =>$val)
{
$sqlUpdate . =;
$sql . = ;
}
请帮帮我
感谢和问候您不能更新一个查询中设置的行。一行-一个查询。还有,你可以用这样的东西
UPDATE table SET field1='aaa', field2='bbb' where id IN (1, 2,4).
但此查询将为每行设置相等的数据。
有时候我用这个
INSERT INTO table(field1, field2) VALUES ('aaa', 'bbb')
ON DUPLICATE KEY
UPDATE SET field1='aaa', field2='bbb' where id IN (1, 2,4)
ps如果您在查询中使用PK,您几乎在任何情况下都可能忘记性能。使用的大多数解决方案都是基于检查主键,如插入到。。。在重复键上,或将替换为… 但是,如果您正在检查非主键,如您所提到的column
categoriaafeed
,我建议您可以使用mysql函数创建一个mysql过程来实现这一点
基本代码应如下所示:
DROP PROCEDURE IF EXISTS func;
DELIMITER //
CREATE PROCEDURE func()
BEGIN
IF '123' in ('Renta Comerciales', 'Renta de Casas', 'Venta de Casas') THEN
UPDATE `may` SET `fone` = 'aaaaa' WHERE `id` = 1;
ELSE
INSERT INTO `may` VALUES ('1','2','3');
END IF;
END//
DELIMITER ;
CALL func();
123
等于您的val
,您可以检查它是否在给定数组中。然后您可以通过if语句
更新或插入数据
这可能是解决问题的一个有用方法。我在格林尼治标准时间+8时区,我现在要睡觉了,现在是晚上23点。明天我会查看您的回复,看看我能帮上什么忙。使用
替换为怎么样,我更改了列,Plantilla和categoriaafeed to primary key替换为最像插入到,唯一的区别是它会检查您插入的新记录的pk是否存在于您的旧记录中。如果是,将删除旧的,然后插入新的。