2012-02-11 90 views
1

我有一個INSERT包裝在try/catch中,但缺少的表不會被捕獲,並且PHP正在'$ dbh-> prepare'中出錯。 我已經在'$ dbh-> prepare'之前設置了'PDO :: ATTR_ERRMODE',並在$ dbh-> prepare'之前將值返回給瀏覽器。爲什麼這個PDO異常被捕獲?

如果該表存在,INSERT按預期工作。當我故意丟棄表格並運行代碼時,我才發現有問題。

我忽略了什麼?

預先感謝

PHP致命錯誤:未捕獲的異常 'PDOException' 與消息 'SQLSTATE [HY000]:常規錯誤:1沒有這樣的表:submit_info' 在C:\等\的httpd \ htdocs中\ sqlite_data \ gather.php:309

if($our->db['save']) { 
    try { 
     echo $dbh->getAttribute(constant('PDO::ATTR_ERRMODE')); 
     $sth = $dbh->prepare(
      "INSERT INTO submit_info(post_time, post_completed, post_size , script_name, user_agent )" . 
      " VALUES (datetime(:request_time, 'unixepoch'), datetime(:current_time, 'unixepoch'), :content_length, :script_filename, :user_agent);" 
      ); 
     $sth->bindValue(':request_time', (@$_SERVER['REQUEST_TIME'] + 0), PDO::PARAM_INT); 
     $sth->bindValue(':current_time', time(), PDO::PARAM_INT); 
     $sth->bindValue(':content_length', (@$_SERVER['CONTENT_LENGTH'] + 0), PDO::PARAM_INT); 
     $sth->bindValue(':script_filename', @$_SERVER['SCRIPT_FILENAME'], PDO::PARAM_STR); 
     $sth->bindValue(':user_agent', (@$_SERVER['HTTP_USER_AGENT'] . ''), PDO::PARAM_STR); 
     $sth->execute(); 
     $our->db['submit_id'] = $dbh->lastInsertId(); 
    } catch (PDOExeption $e) { 
     echo "There was an error!"; # try writing something to the browser temporarily 
     errors("Error writing page load information to database: " . $e->getMessage()); 
     $our->db['save'] = FALSE; 
    } 
} 

回答

6

You misspelt PDOException;你有PDOExeption(注意丟失c)。

+0

確實是這個問題。這是我工作過的第一個PDO項目。我花了2個小時審查了文件和邏輯,因爲那封信沒有。科莫多通常會標記拼寫錯誤,或者我在日誌中看到一個運行時錯誤,指向正確的方向。 謝謝你的幫助! – Richard 2012-02-11 18:17:07