SQLインジェクションを防ぐためには、bindParamを使用する方がよいでしょう。私はそれが最良の方法であるかどうかわかりませんが、私はこれをやっている方法があります:
$values = array(array(1,2),array(3,4),array(5,6),);
$nbValues = count($values);
$sql = 'INSERT INTO table_name (col_name1, col_name2) VALUES ';
for ($i=0; $i < $nbValues; $i++) {
$sql .= '(:col1_'.$i.', :col2_'.$i.')';
if ($i !== ($nbValues-1))
$sql .= ',';
}
$command = Yii::app()->db->createCommand($sql);
for ($i=0; $i < $nbValues; $i++) {
$command->bindParam(':col1_'.$i, $values[$i][0], PDO::PARAM_INT);
$command->bindParam(':col2_'.$i, $values[$i][1], PDO::PARAM_INT);
}
$command->execute();
私はこれが役立つことを願っています!あなたのケースで
は、1つのレコードのみが挿入されます。おそらく最後のものです。 –
ループ内に複数のレコードを追加するには '$ model-> isNewRecord = true;'が必要です。 –