На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
  
    > PHP - execute
      Уважаемые форумчане! Требуется ваша помощь!

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

      Есть массив (кстати, может заменить на объект?) и две таблицы в базе данных:
      ExpandedWrap disabled
        $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 и он сам взял что ему необходимо, но насколько я знаю, больше чем нужно параметров нельзя указывать.

      Прошу учесть, что задача упрощена! В таблицах куча колонок, а не по две как здесь, поэтому их перечисление трудоёмко, это и заставляет искать иные способы!
        Неужели так сложно взять ту же ёлку (Eloquent) и не заниматься, тем чем, ты занимаешься? :D

        ExpandedWrap disabled
          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 - это как минимум довольно оптимистично и годится, разве только для лендингов.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0220 ]   [ 16 queries used ]   [ Generated: 28.03.24, 20:24 GMT ]