Вы можете вставить несколько строк в один запрос с помощью этой функции:
function insertMultiple($query,$rows) {
if (count($rows)>0) {
$args = array_fill(0, count($rows[0]), '?');
$params = array();
foreach($rows as $row)
{
$values[] = "(".implode(',', $args).")";
foreach($row as $value)
{
$params[] = $value;
}
}
$query = $query." VALUES ".implode(',', $values);
$stmt = $PDO->prepare($query);
$stmt->execute($params);
}
}
$ row - массив массивов значений. В вашем случае вы вызовете функцию с помощью
insertMultiple("INSERT INTO tbl (`key1`,`key2`)",array(array('r1v1','r1v2'),array('r2v1','r2v2')));
. Это имеет преимущество, которое вы используете подготовленные операторы , вставляя несколько строк с одним запросом. Безопасность!