2017-11-12 23 views
0

は、私はここに私のコードpdoを使ってmysqlに組み込み文を挿入する方法は?

$sql="INSERT INTO post (a,b,c) VALUES "; 

$placeholder=''; 
foreach($result as $record){ 
    $arr=array($record[a],$record[b],$record[c]); 
     $values[]=$arr; 
     $placeholder.="(?,?,?),"; 
} 

$placeholder=rtrim($placeholder,','); 
$sql.=$placeholder; 

try{ 
    $res=$db->prepare($sql); 
    $res->execute($values); 
}catch(Exception $e){ 
    echo $e->getMessage(); 
} 

である。しかし、それは動作していない、プリペアドステートメントを介した単一のクエリに10以上のレコードを挿入します。私は何をしたいのですか? 次の質問は、私がステートメントを準備してステートメント10を実行するとどうなりますか? 接続は10時間かどうかを再作成しますか?(それは多くのことをDBに接続するために良いではありません) 私の実際のコードでは、私は新しいテーブルに1000以上のレコードを挿入したいので。

+0

"準備文を実行して10回実行する"は正しいアプローチです - 同じループを繰り返していない限り、同じ接続を使用します。 – RamRaider

答えて

1

バインドする値を構築、あなたの建物までの配列の配列を、これはちょうどあなたがバインドする値の配列でなければなりません。

foreach($result as $record){ 
    $values[] = $record[a]; 
    $values[] = $record[b]; 
    $values[] = $record[c]); 
    $placeholder.="(?,?,?),"; 
} 

また、すべての値を配列に追加したい場合は、array_merge()を使用できます。

+0

素晴らしいです。ありがとうございました – peyman

関連する問題