オンライン登録の際、顧客は登録するいくつかのプログラムを選択できます。これらのプログラムは3桁の整数であり、配列に格納されます。例えば1つのMySQLに配列を挿入するにはPHPとPDOを使用したPreparedステートメント
:それは時間が来ると
$data = array();
$data[] = 155;
$data[] = 165;
$data[] = 175;
$data[] = 185;
:
私はプログラムID 155、165、175に入学したい、および185
私の配列は、のように簡単に設定されていますこの情報を関連するテーブルに挿入するには、登録の他の部分の追加要素も含めてください:
例えば、私がSINGLEプログラムを実行していた場合次のようにRT文は、それがになります。私は
for($j = 0; $j < (count($data)-1); $j++) {
$stmt = $db->prepare("INSERT INTO table SET memberID=?, programID=?, date_added=NOW()");
$stmt->execute(array($memberid, $data[$j]));
}
:
$stmt = $db->prepare("INSERT INTO table SET memberID=?, programID=?, date_added=NOW()");
$stmt->execute(array($memberid, 155));
を私は通常、SQL文の複数のインスタンスを呼び出し、そのように実行することになる上に配列するための単純なループを作成します上記のコードが無効であることを認識しますが($ data [$ j])、呼び出しを行う正しい方法を探しています。
私は、ビルドする前に、1つの動的SQL文が上記のような複数の呼び出しよりも全体的に優れていると言われました。私の最初のパスは次のようなものになるだろう:
$sql = array();
foreach($data as $row) {
$sql[] = '("'.$memberid.'", "'.$row[$j].'", NOW()")';
}
mysql_real_query('INSERT INTO table (memberid, programid) VALUES '.implode(',', $sql));
が、PDOで、私は特にプレースホルダで、これがどのように動作するか非常にわかりません(?)。
提案がありますか?あなたがプログラム的にクエリを構築することができ
は何度も準備多くを実行しないでください。 1つは準備されているので、別の値で複数回実行できます。提案のおかげで – Powerlord