Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: PHP - execute
Форумы портала PHP.SU » » Работа с СУБД » PHP - execute

Страниц (1): [1]
 

1. tonchikp - 18 Июля, 2017 - 18:40:15 - перейти к сообщению
Уважаемые форумчане! Требуется ваша помощь!

Подскажите, как эффективно и просто решить задачу:

Есть массив (кстати, может заменить на объект?) и две таблицы в базе данных:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $massive = [
  3.  
  4. 'animal' => 'cat',
  5. 'age' => '1',
  6. 'color' => 'gray'
  7.  
  8. ];
  9.  
  10. $db = new PDO('sqlite:file.sqlite');
  11.  
  12. $db -> exec("CREATE TABLE IF NOT EXISTS 'table1' (
  13. id INTEGER PRIMARY KEY AUTOINCREMENT,
  14.  
  15. animal TEXT,
  16. age INTEGER
  17.  
  18. )");
  19.  
  20. $db -> exec("CREATE TABLE IF NOT EXISTS 'table2' (
  21. id INTEGER PRIMARY KEY AUTOINCREMENT,
  22.  
  23. animal TEXT,
  24. color TEXT
  25.  
  26. )");
  27.  
  28. $prepare1 = $db -> prepare("INSERT INTO 'table1' (animal, age) VALUES (:animal, :age)");
  29. $prepare2 = $db -> prepare("INSERT INTO 'table2' (animal, color) VALUES (:animal, :color)");
  30.  
  31.  


Цель: записать массив в обе таблицы. Вроде просто и не было бы вопроса, если бы можно было этот массив отдать в execute и он сам взял что ему необходимо, но насколько я знаю, больше чем нужно параметров нельзя указывать.

Прошу учесть, что задача упрощена! В таблицах куча колонок, а не по две как здесь, поэтому их перечисление трудоёмко, это и заставляет искать иные способы!

 

Powered by ExBB FM 1.0 RC1