簡體   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