Есть массив PHP: $fruits = [['name' => 'apple', 'colour' => 'green', 'calories' => 100], ['name' => 'banans', 'colour' => 'yellow', 'calories' => 11150]]; Код который записывает этот массив в БД PHP: $pdo->beginTransaction(); /* Вставка множества записей по принципу "все или ничего" */ $sql = 'INSERT INTO fruit (name, colour, calories) VALUES (?, ?, ?)'; $sth = $pdo->prepare($sql); foreach ($fruits as $fruit) { $sth->execute([ $fruit['name'], $fruit['colour'], $fruit['calories'], ]); } /* Фиксация изменений */ $pdo->commit(); Здесь все работает. как записать массив такого вида? PHP: $fruits = [[[['name' => 'apple', 'colour' => 'green', 'calories' => 100], ['name' => 'banans', 'colour' => 'yellow', 'calories' => 150]],[['name' => 'ground', 'colour' => 'black', 'calories' => 200], ['name' => 'orange', 'colour' => 'colour_orange', 'calories' => 20]]]];
Разобрался С помощью цыкла for PHP: for($i = 0; count($fruits) > $i; $i ++){ foreach ($fruits as $fruit) { $sth->execute([ $fruit['name'], $fruit['colour'], $fruit['calories'], ]); } }
@4akHopic PHP: <?php $fruits = [[[['name' => 'apple', 'colour' => 'green', 'calories' => 100], ['name' => 'banans', 'colour' => 'yellow', 'calories' => 150]],[['name' => 'ground', 'colour' => 'black', 'calories' => 200], ['name' => 'orange', 'colour' => 'colour_orange', 'calories' => 20]]]]; foreach($fruits[0] as $fruit){ foreach($fruit as $item){ $sth->execute([ $fruit['name'], $fruit['colour'], $fruit['calories'], ]); } } ?>
в моей обвертке такая фича предусмотрена. Когда нужно массовый insert сделать PHP: <?php use Aero\Supports\Lerma AS DB; /* ... */ $array = [ [ 'a', 1, 2 ], [ 'b', 3, 4 ] ]; DB :: prepare( 'INSERT INTO `table`( `name`, `column2`, `column3` ) VALUES ( ?,?,? )', $array );