2009-08-27 17 views
2

私は値の可変量を持つ配列を持っています。値の配列を挿入

私のDBにINSERTするより効率的な方法がありますか?

答えて

3

this siteには、複数の挿入クエリを持つ素晴らしいMySQLの例があります。それリクエストに応じて

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

から有効なSQLです:PHPのスニペット:

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

Hrmmm値が動的な場合はどうなりますか? 1つのインサートにすることができます。 30である可能性があります。 – ian

+0

想像力...あなたが好きなほど大きなクエリを作成することができます。 – xtofl

1

複数の値の挿入が可能なDBの場合は、複数の挿入文を作成してDBに送信できます.1つは1つのコマンドで複数の挿入を行います。

複数の挿入を行うことができない場合(MSSQLでは許可されていないため)、あなたは固執していると思います。

+0

Yea MySQL。それはちょっと不思議だった問題ではありません。ありがとう。 – ian

2

私の経験では、複数行の挿入は、単一の行挿入の同等の数よりも速くMUCHに処理され、一度に大量のデータを挿入する場合は、それは良い方法です。私は数千の行のデータを入力するプロセスが、このメソッドを使用して5〜10分から文字通り秒まで凝縮されるのを見てきました。

私はimplode()を使ってフィールドの配列を結合するのに、&の値を一緒に使うことに熱心でした。データの行に対して同じことをすることができない理由はありませんが、引用、エスケープなどのフィールドを識別できるだけで済みます。

引数として、$ rowsは適切に配列されていると仮定します。書式設定されたSQL値...

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

似たような方法で、個々のフィールドを組み立てることができます。