[英]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 KEY
或REPLACE 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.