Drupal 7 で DB にレコードを複数行まとめて入れる方法

Drupal 7

タイトルのとおり Drupal でレコードを複数行まとめて入れる挿入する方法について。

こちら可能は可能なのですがちゃんと解説しているドキュメントがあまりないようでパッと確認したいときに不便します。メモ代わりに書いておきたいと思います。

おなじみ db_insert() で生成した InsertQuery に対して values() を呼び出せば OK です。

$fields = array('title', 'uid');

$values = array(
  array(
    'title' => 'ひとつめ',
    'uid' => 1,
  ),
  array(
    'title' => 'ふたつめ',
    'uid' => 1,
  ),
);

$query = db_insert('node')->fields(fields);
foreach ($values as $v) {
  $query->values($v);
}
$query->execute();

$values はインデックス配列でも連想配列でも OK ですが(インデックス配列の場合は $fields と同じ並びにする必要あり)、連想配列で明示的に書く方がよいかと思います。

参考


アバター
後藤隼人 ( ごとうはやと )

ソフトウェア開発やマーケティング支援などをしています。詳しくはこちら