2013-10-16 32 views
1

我正在做的是使用Codeigniter活動記錄更新一行。 DBMS是PostgreSQL。我想趕上錯誤,而不會像下面的屏幕結束。如何捕獲數據庫錯誤而不讓它死亡?

enter image description here

如果我說明理由按照這個程序,如果沒有錯誤正確執行更新查詢功能有根據返回值(true或false)在1日被執行第二功能功能。

我試過下面的方法不起作用。

方法1

$this->db->where('id', $folio_id); 
    $this->db->update('folio', $data); 
    if(!empty($this->db->_error_number())) 
    { 
    echo "ERROR";die; 
    } 

方法2

try 
    { 
     $this->db->where('id', $folio_id); 
     $this->db->update('folio', $data); 
    } 
    catch (Exception $e) 
    { 
     echo "ERROR";die; 
    } 

所有我想要做的是返回true,如果查詢沒有錯誤否則,如果有任何錯誤返回false執行。

如何捕獲數據庫錯誤而不讓它死亡?

+1

這種嘗試..你需要改變一點點CI有例外> http://stackoverflow.com/questions/15858372/codeigniter-try-catch-is-not-working-in-model等級 – Svetoslav

+0

感謝您的信息 – Techie

+0

第二次以爲你可以更改錯誤顯示,而不是跳過核心更改。 您可以將db錯誤設置爲等於默認500錯誤頁面。 這樣您不需要嘗試catch全部.. – Svetoslav

回答

1

我不確定是否理解得很好,但是爲什麼你不把它從擒拿中移走?

$success = true; 
try 
    { 
     $this->db->where('id', $folio_id); 
     $this->db->update('folio', $data); 
    } 
    catch (Exception $e) 
    { 
     echo "ERROR ".$e.getMessage(); 
     $success = false; 
    } 

if ($success) { 
    ... 
+0

使用try,catch不起作用 – Techie