如果我有這樣的一個表:MySQL的插入多行到一個表,如果他們不存在
+-------------+-------------+
| Field | Type |
+-------------+-------------+
| document | varchar(35) |
| section | int(11) |
| selection | int(11) |
| status | varchar(35) |
+-------------+-------------+
而且我在PHP的數組。我們稱之爲$choices[]
。列selection
對選擇數組的數組索引進行覈對。如果我向$choices
數組添加一個或多個元素,那麼我需要更新數據庫。我會在一個循環中運行,其中$document
和$section
也被設置。我不想假設在編號中間沒有缺失的行。什麼是$choices
中每個元素檢查(文檔,節,選擇)的最有效方式,創建不存在的任何元素,並將其狀態設置爲「新」? 我是否必須將其作爲循環來完成,還是有一種方法可以在一個查詢中執行此操作?
這是完全沒有經過測試的,但基本上我是這樣做的,如果我沒有尋求幫助。我猜想有人可能比我有更好的解決方案。
foreach($documents as $document)
{
foreach($sections as $section)
{
$choices=$master_array[$document][$section];
$ch_count=count($choices);
$counter=0;
while($counter < $ch_count-1)
{
$query="SELECT status FROM mytable WHERE document='$document' AND section='$section' AND selection='$counter'";
$result = mysql_query($query);
if(mysql_num_rows($result)==0)
{
$query="INSERT INTO mytable VALUES('$document','$section','$counter','new')";
$result = mysql_query($query);
}
$counter++;
}
}
}
你試過了什麼? – Cfreak 2012-08-02 14:09:21
你的代碼在哪裏? – 2012-08-02 14:11:53
我仍然在建模,但我會稍後發佈一些僞代碼。 – TecBrat 2012-08-02 14:15:03