2016-07-19 3 views
0

Я пытаюсь сделать простую вставку с использованием PDO и подготовленного оператора, но он не вставляет данные, не возвращает ошибку или что-то еще. Журналы также пусты. Вот код, который выполняется, но ничего не делает. Значения не равны нулю.PDO подготовленный оператор ничего не делает

try { 
    $query = $this->db_handler->prepare('INSERT INTO submissions (firstname, lastname, email, phone, mailinglist) VALUES (:firstname, :lastname, :email, :phone, :mailinglist);'); 
    $query->bindParam(':firstname', $values['firstname']); 
    $query->bindParam(':lastname', $values['lastname']); 
    $query->bindParam(':email', $values['email']); 
    $query->bindParam(':phone', $values['phone']); 
    $query->bindParam(':mailinglist', $values['mailinglist']); 
    $query->execute(); 
} catch (PDOException $e) { 
    echo "DB error: " . $e->getMessage(); 
} 

Жутко, этот код работает отлично, который выполняется непосредственно перед предыдущим кодом на каждом запросе:

try { 
    $this->exec("CREATE DATABASE IF NOT EXISTS $this->db_name;"); 
    $this->exec("USE $this->db_name;"); 
    $this->exec("CREATE TABLE IF NOT EXISTS $this->table_name (
    id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    firstname VARCHAR(50) NOT NULL, 
    lastname VARCHAR(50) NOT NULL, 
    email VARCHAR(50) NOT NULL, 
    phone VARCHAR(12) NOT NULL, 
    mailinglist BOOLEAN NOT NULL, 
    submitdate TIMESTAMP 
);"); 
} catch (PDOException $e) { 
    echo "DB error: " . $e->getMessage(); 
} 
+5

Вы включили исключения в pdo? по умолчанию pdo терпит неудачу, возвращая логическое значение false и не выдает никаких исключений. –

+1

Обратите внимание, что вам не нужно прерывать запросы, используя ';', поэтому избавитесь от этого. Кроме того, что сказал @MarcB - убедитесь, что вы сначала установили PDO в режиме исключения. –

+0

@MarcB Я этого не сделал. Я даже не знал, что их нужно активировать. Документация PDO - это боль .. – Jordan

ответ

1

Как MarcB отметил в комментариях, я не был благоприятным исключением в PDO. Использование db_handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); после создания экземпляра PDO показало, что в запросе была ошибка.

http://php.net/manual/en/pdo.error-handling.php

Смежные вопросы