以下のようなコードを使用して、(PDO を使用して) mysql DB に挿入しています。目的は、1 つのクエリのみを使用してデータを挿入することでした。残念ながら、bindValue や param を使用しないため、PDO を使用する目的が無効になります。より安全でありながら不要なクエリを回避するようにコードを記述したいと考えています。誰でもこれを行う方法をお勧めできますか?
注 1:セット内の質問の数は、プログラムにアクセスするたびに変更できます (つまり、$totalQ
実行するたびに異なる可能性があります)。
try
{
for ($i=0; $i<$totalQ; $i++)
{
$stqid[$i][0]=$lastInsertValue; //instance PDO::PARAM_INT
$stqid[$i][1]=$jqid[$i][0]; //question number PDO::PARAM_INT
$stqid[$i][2]=$jqid[$i][5]; //result PDO::PARAM_INT
$stqid[$i][3]=$jqid[$i][3]; //question start PDO::PARAM_STR
$stqid[$i][4]=$jqid[$i][4]; //question finish PDO::PARAM_STR
}
$values = array();
foreach ($stqid as $rowValues)
{
foreach ($rowValues as $key => $rowValue)
{
$rowValues[$key] = $rowValues[$key];
}
$values[] = "(" . implode(', ', $rowValues) . ")";
}
$count = $dbh->exec("INSERT INTO results(instance, qid, result, start, finish) VALUES ".implode (', ', $values));
$dbh = null;
}
注 2:開始と終了の時刻形式にコンマを使用すると、implode ステートメントでエラーが発生する可能性があります。私が達成しようとしていることを見ることができるように、それらを追加しました。
どんな助けでも大歓迎です。ありがとう。
編集:私はクリスの答えを選びましたが、アリックス・アクセルのアドバイスにとても感謝しています。とても助かりました、ありがとう!