PHP、MySqlで、大量のデータを一括で挿入したい場合、
一件一件INSERTするのは時間が掛かるので、普段はこのように記述しております。PDOを使用しております。
ユーザーのテーブルを挿入する時の一例です。
PHP
1 2// $aryUsersに 3//[0] => tanaka 4//[1] => katou 5//[2] => yamamoto 6//このようなデータが入っていると仮定します。 7 8$arySqlCnt = 0; 9unset($arySql); 10 11$sql = "INSERT INTO user(user_name) VALUES"; 12foreach( $aryUsers as $value) { 13 $arySqlCnt++; 14 $arySql[] = "(:user_name".$arySqlCnt.")"; 15} 16$sql .= " ".implode(",", $arySql); 17 18// 変数sqlには 19// INSERT INTO user(user_name) VALUES (:user_name1),(:user_name2),(:user_name3) というクエリが入ります 20 21$sth = $pdo->prepare($sql); 22unset($arySql); 23$arySqlCnt = 0; 24 25foreach( $aryUsers as $value ) { 26 $arySqlCnt++; 27 $sth->bindValue(":user_name".$arySqlCnt, $value, PDO::PARAM_STR); 28} 29 30$sth->execute();
このように記述しています。
挿入する数とバインドする数だけ、foreachでまわしています。
このコードが非常にわかりづらい上に長いので、
どなたか別のわかりやすい挿入方法を教えて頂くか、提案していただけるとありがたいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/11 00:54
2015/09/11 01:47