こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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)になっているようと思えます。
どこに問題があるかご教示をお願いいたします。

投稿日時 - 2013-02-02 00:22:45

QNo.7923327

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

解決出来なかったラ御免なさいね。

syndaxエラーって出ていますが、★の右にある「,」っていりますか?

$sql1.= "(null,'".$time_array[$i][0]."',"."'".$time_array[$i][1]."',"."'".$time_array[$i][2]."',"."'".$flag."')★," ;

投稿日時 - 2013-02-02 20:12:09

補足

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

投稿日時 - 2013-02-03 00:10:56

あなたにオススメの質問