2009-08-27 42 views
2

我有一個數值可變的數組。插入數值數組

是否有一個更有效率或更好的方式將它們插入到我的數據庫中,除了一個循環內部的查詢?

回答

3

this site,有一個很好的示例MySQL的多插入查詢。這有效的SQL來

INSERT INTO [table] 
VALUES 
(row1), 
(row2), 
... 

根據要求:一個PHP代碼片段:

$query="INSERT INTO mytable\nVALUES\n (".$values[0].")"; 
array_shift($values); 
foreach($values as $value) { 
    $query .= ",(".$value.")"; 
} 
+0

Hrmmm如果這些值是動態的。可以是1插入。可能是30. – ian 2009-08-27 17:20:07

+0

有些想象力......你可以創建一個你喜歡的大型查詢。 – xtofl 2009-08-27 17:24:14

1

如果您使用的數據庫允許多個值插入,那麼您可以創建一個多插入語句並將其發送到數據庫 - 一個連接一個命令來執行多個插入。

如果你不能做多個插入 - (因爲MSSQL不允許) - 那麼我認爲你卡住了。

+0

是的MySQL。這不是一個只是好奇的問題。謝謝。 – ian 2009-08-27 17:15:21

2

以我的經驗多行插入的處理速度比單行插入同等數量的更快MUCH,如果您一次插入大量數據,那麼這是一個好方法。我已經觀看了使用這種方法將輸入數千行數據的過程從5-10分鐘精簡到幾秒鐘。至於代碼部分,我一直使用implode()來連接字段&的數組。沒有理由你不能做同樣的行數據,你只需要能夠確定哪些字段需要引用,轉義等。

爲了參數的緣故,假設$行是一個正確的數組格式化的SQL值...

$sql = "INSERT INTO `table` VALUES (" . implode("), (", $rows) . ")"; 

您可以應用類似的東西來組裝單個字段,如果您需要的話。