Здравствуйте, подскажите пожалуйста. У меня вот есть массива, <?php $ArrayTable1 ?>
он многомерный. Массив массивов можно сказать, хранит в себе 7 массивов. Для каждого массива, в таблице в БД есть свой столбец. Подскажите пожалуйста как с помощью <?php db_insert() ?>
произвести множественную вставку? Вот я пробовал вот так вставить, пока что в один столбец.
<?php
$query = db_insert('table1')->fields(array('nagruz_Lg'));
foreach($ArrayTable1 as $i => $massiv) {
foreach($massiv as $j => $value) {
$query->values($value);
}
}
$query->execute();
?>
Но выдает ошибку вот такую: Recoverable fatal error: Argument 1 passed to InsertQuery::values() must be of the type array, string given, called in C:\Open\OpenServer\domains\drupal\sites\all\modules\setdb\setdb.module on line 344 and defined в функции InsertQuery->values() (строка 557 в файле C:\Open\OpenServer\domains\drupal\includes\database\query.inc).
Подскажите пожалуйста, как исправить, или может быть я вообще не верно делаю цикл. Заранее благодарю за ответ
Комментарии
Так пробуйте:
<?php
$query = db_insert('table1')->fields(array('nagruz_Lg'));
foreach($ArrayTable1 as $massiv) {
$query->values($massiv);
}
$query->execute();
?>
А, скорее всего, так:
<?php
$query = db_insert('table1');
$query->values($ArrayTable1);
$query->execute();
?>
Не, все равно ошибку пишет. Вот думаю может напрямую запросы писать
Ради теста попробовал вот так, всё работает) сейчас теперь со своим вариантом буду пробовать
<?php
for($i = 0; $i < 5; $i++) {
$fields = array(
'test1' => $i,
);
db_insert('test')->fields($fields)->execute();
}
?>
Вот блин, а с этой таблицей
<?php
for($i = 0; $i < 5; $i++) {
$fields = array(
'nagruz_Lg' => $i,
);
db_insert('table1')->fields($fields)->execute();
}
?>
Ошибка - PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'u0421090_default.table1' doesn't exist: INSERT INTO {table1} (nagruz_Lg) VALUES (:db_insert_placeholder_0); Array ( [:db_insert_placeholder_0] => 0 ) в функции dbsubmit()
Вроде бы нашел решение, думаю делать вот так:
<?php
$fields = array(
'data' => serialize($ArrayTable1),
);
db_insert('test')->fields($fields)->execute();?>
Записывать массив в БД с помощью функции serialize, то есть представлять весь массив как одну строку, а потом unserialize, нашел информацию на сайте - https://ruseller.com/lessons.php?id=699&rub=37,
спасибо большое за помощь)