MySQLのbulk insertを手で書くのはまぁまぁめんどくさいなー、と思ったので何かライブラリないかなと思いつつ、bulkyというやつを見つけたりしたのですが、ちょっとコネクション周りのハンドリングとかクエリの実行周りは自前で扱いたい、という事情があったりして、bulk insert用のSQLの生成に特化したSQL_Insert_Multiを作ってみました。
こんな感じで使えます。
$builder = new SQL_Maker_InsertMulti("your_table", array('fields' => array(
'id' => \PDO::PARAM_INT,
'name' => \PDO::PARAM_STR,
'created_at' => \PDO::PARAM_STR,
)));
foreach ( $data as $row ) {
$builder->bindRow(array(
'id' => $row['id'],
'name' => $row['name'],
'created_at' => $row['created_at'],
);
}
$stmt = $pdo->prepare($builer->toQuery());
$builer->bindValues($stmt);
$stmt->execute();
toQueryしたときに呼びだし元のSQLコメントを生成したりしてくれます(オフにすることもできます)。