2014-03-30 66 views
0

我希望能夠將一個字符串數組添加到表中,以便每個字符串都是一個新行(在PHP中)。SQL - 插入值爲數組的數據

這是它的僞代碼:

$Array = "10000,10001,10002,10003"; 
$Data = "ImportantData"; 
mysqli_query($db, "INSERT INTO MyTable(`id`,`data`) VALUES($Array, $Data)"); 

使先前空表看起來像:

id  | data  
------------------------ 
10000 | ImportantData 
10001 | ImportantData 
10002 | ImportantData 
10003 | ImportantData 

在更新腳本,與已建立的那些行,我可以只說:

mysqli_query($db, "UPDATE MyTable SET data = $Data WHERE `id` IN($Array)); 

但是,我希望它創建行,而不只是更新舊的。

有什麼辦法可以做到這一點?

回答

0

只需在$ Array上創建一個foreach循環,然後插入數據即可。我假設你想更新它,如果它的存在,因爲它意義不大創建具有相同PK的新紀錄,所以請使用以下(假設你正在使用PHP PDO

INSERT INTO MyTable (id,data) VALUES (:id,:data) ON DUPLICATE KEY UPDATE data=:data; 
+0

foreach循環將意味着多個查詢,因爲我可以只用一個與更新做到這一點,我希望有一個類似的方法與插入 – seanlloydbooth

+0

你可以,但我關心的。關於多個PK仍然r emains。 – user1032531

0

使用REPLACE INTO

REPLACE INTO table SET id = 10001, data = 'new important data'; 

MySQL文檔:http://dev.mysql.com/doc/refman/5.0/en/replace.html

+0

我不知道如何把數組放在那裏,因爲我沒有明確地告訴它設置id = 10001.我希望它爲$ Array中的每個唯一ID設置data ='ImportantData',在一個查詢。 – seanlloydbooth