RumusBin
@RumusBin
Живу, учусь, не стесняюсь

Как записать данные в БД?

Доброго времени всем!
Столкнулся с проблемой записи данных в БД в своей учебной проге, прошу внимания.
Суть такова, что имеем кусочек программы (телефонная книга). В БД создано две таблицы, contacts и phone_numbers. В метод модели, который отвечает за запись новых номеров в БД поступает массив с телефонными номерами(из контроллера, который обрабатывает данные формы) . Собственно вот код метода:
public static function addPhoneNumbers($data)
    {
       
            $db = Db::getConnection();//подключаюсь к БД
            
            $arrIds = $db->query('SELECT id FROM contacts ORDER BY id DESC LIMIT 1');//получаю последний id из таблицы контактов
            $arrIds->setFetchMode(PDO::FETCH_ASSOC);
            $contact_id = $arrIds->fetch();    //присваиваю это значение переменной  
            
        foreach ($data as $key => $number){ //создаю цикл для обработки массива с тел. номерами
                       
            $sql = 'INSERT INTO phone_numbers (phone_number, contact_id) '
                . 'VALUES (:phone-number, :contact_id)';
            $result = $db->prepare($sql);
            $result->bindValue(':phone_number', $number, PDO::PARAM_INT);//подставляю значение телефонного ноера
            $result->bindValue(':contact_id', $contact_id['id'], PDO::PARAM_INT);//значение раннее полученного id из таблицы контактов
            $result->execute();
        }       
    }

Попытался прокомментировать свои действия, но вкратце опишу, что я пытался тут сделать:
Первым дело, после подключения к БД, я получаю последний айди из таблицы контактов, для того, что бы включить его в поле contact_id таблицы phone_numbers (для связи их между собой).
Потом произвожу запись в таблицу phone_numbers в соответствующие поля, при помощи цикла, подставляя значения, которые уже имею. Но запись в таблицу не происходит. Не могу найти причину, прошу помощи. Спасибо!
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 1
romy4
@romy4
Exception handler
Постарайтесь сделать всё сперва ручками, все ваши запросы напрямую к базе.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы