繁体   English   中英

如何在MySQL中更新和插入多行

[英]How to update and insert multiple row in 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'=>'7','val=>'Venta de Departamentos'), 
        [4] => array('id'=>'1','val=>'Venta de Terrenos') ) 

我必须在名为categoriasPlantilla的表中进行两个查询

然后表格有三列

plantilla ,categoriaFeed, id

我必须检查表的categoriafeed列中是否存在数组的val ,然后必须使用数组id更新该id

如果没有,那么我必须在表中插入新行

Plantilla的价值是11

我知道如何在一个查询中进行多次插入,但是如何建立这样的查询进行更新?

首先,我正在考虑做这样的事情

$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,则几乎在任何情况下都可能忘记性能。

使用的大多数解决方案都基于检查主键,例如INSERT INTO... ON DUPLICATE KEYREPLACE INTO...

但是,如果您正在检查非主键(即您提到的列categoriaFeed ,则建议您可以创建一个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-statement更新或插入数据。

这可能是解决问题的有用方法。 我在GMT+8时区,现在要睡觉了,现在是23:00 PM。 明天我将检查您的答复,以帮助您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM