Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.253.93] |
|
Сообщ.
#1
,
|
|
|
Уважаемые форумчане! Требуется ваша помощь!
Подскажите, как эффективно и просто решить задачу: Есть массив (кстати, может заменить на объект?) и две таблицы в базе данных: $massive = [ 'animal' => 'cat', 'age' => '1', 'color' => 'gray' ]; $db = new PDO('sqlite:file.sqlite'); $db -> exec("CREATE TABLE IF NOT EXISTS 'table1' ( id INTEGER PRIMARY KEY AUTOINCREMENT, animal TEXT, age INTEGER )"); $db -> exec("CREATE TABLE IF NOT EXISTS 'table2' ( id INTEGER PRIMARY KEY AUTOINCREMENT, animal TEXT, color TEXT )"); $prepare1 = $db -> prepare("INSERT INTO 'table1' (animal, age) VALUES (:animal, :age)"); $prepare2 = $db -> prepare("INSERT INTO 'table2' (animal, color) VALUES (:animal, :color)"); Цель: записать массив в обе таблицы. Вроде просто и не было бы вопроса, если бы можно было этот массив отдать в execute и он сам взял что ему необходимо, но насколько я знаю, больше чем нужно параметров нельзя указывать. Прошу учесть, что задача упрощена! В таблицах куча колонок, а не по две как здесь, поэтому их перечисление трудоёмко, это и заставляет искать иные способы! |
Сообщ.
#2
,
|
|
|
Неужели так сложно взять ту же ёлку (Eloquent) и не заниматься, тем чем, ты занимаешься?
foreach ($tables as $table) { $conn->table($table)->insert($arr); } Добавлено По сабжу: Использование отдельно от стека (ставится изи через композер): https://jenssegers.com/53/using-eloquent-without-laravel Мануал: https://laravel.com/docs/5.4/queries#inserts (учитывай, что без DI контейнера сервис-локации через фасады "DB" не будет, надо через прямое соединение). А уж тем более, как ты написал - "задача упрощена", тогда вообще становится непонятно почему ты не использовал Doctrine, Analogue, Propel, Eloqeunt, etc изначально. Всё же использование нативного PDO без билдера и\или ORM - это как минимум довольно оптимистично и годится, разве только для лендингов. |