• 締切済み

PHPでDBの複数行更新について

はじめまして、PHPを最近使い始めました初心者です。 [環境] PHP: 5.4.7 DB: SQLite 3.7.15.2 a  OS: Windows 7 DB上のテーブルへ複数行を挿入するソースを書いてますが 下記の文法エラーとなり行き詰っています。 [配列データとソース] Array ( [0] => Array ( [0] => 1359904500 [1] => 1359905400 [2] => 150 ) [1] => Array ( [0] => 1359990900 [1] => 1359991800 [2] => 150 ) [2] => Array ( [0] => 1360077300 [1] => 1360078200 [2] => 150 ) [3] => Array ( [0] => 1360163700 [1] => 1360164600 [2] => 150 ) 以下100件ほど続きます $sql1 = "INSERT INTO aaa (id,sstamp,estamp,data,flag) VALUES " ; $flag = 1; $count = count($time_array) ; for ( $i=1; $i< $count; $i++ ) { $sql1.= "(null,'".$time_array[$i][0]."',"."'".$time_array[$i][1]."',"."'".$time_array[$i][2]."',"."'".$flag."')," ; } $sql1 = substr($sql1, 0, -1) ; var_dump($sql1) ; $result = $db->query($sql1) ; [エラー] Warning: SQLite3::query(): Unable to prepare statement: 1, near ",": syntax error var_dumpでsql作成用変数($sql1)を見てみると問題ないように見えました。 解せないのは、変数内容をsqliteのコマンドラインへコピぺすると 正常に挿入できてしまいました。また配列を一つにしてみるとエラーなくDB挿入できました。 これよりSQL複数行挿入のvalue以下の記述が怪しいと思い、確認しましたが (aa, bb, cc), (dd, ee, ff)になっているようと思えます。 どこに問題があるかご教示をお願いいたします。

みんなの回答

  • NeilMania
  • ベストアンサー率30% (40/131)
回答No.1

解決出来なかったラ御免なさいね。 syndaxエラーって出ていますが、★の右にある「,」っていりますか? $sql1.= "(null,'".$time_array[$i][0]."',"."'".$time_array[$i][1]."',"."'".$time_array[$i][2]."',"."'".$flag."')★," ;

bindoo
質問者

補足

ご回答ありがとうございます。 INSERTの複数行構文では、INSERT INTO tbl (c1,c2) VALUES (data1,data2), (data3,data4)のため★の右にある「,」は必要です。ちなみに外して試してもみましたが、やはりSQLite3::query(): Unable to prepare statement: 1, near "("となります。

関連するQ&A

専門家に質問してみよう