2016-07-19 84 views
0

我想要做一個簡單的插入使用PDO和一個準備好的語句,但它不插入數據,返回一個錯誤,或任何東西。日誌也是空的。這是執行但無所事事的代碼。值不爲null。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

回答