【问题标题】:How can I catch the database error without letting it end up dead?如何在不让它死掉的情况下捕获数据库错误?
【发布时间】:2013-10-16 09:25:53
【问题描述】:

我正在做的是使用 Codeigniter 活动记录更新一行。 DBMS 是 PostgreSQL。我想捕捉错误,而不是像下面这样的屏幕。

如果我解释遵循此过程的原因是,如果更新查询函数正确执行且没有错误,则根据第一个函数的返回值(true 或 false)执行第二个函数。

我尝试了以下方法都不起作用。

方法一

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

方法二

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

如果查询执行没有错误,我要做的就是返回 true,否则如果有任何错误,则返回 false。

如何捕捉数据库错误而不让它最终死掉?

【问题讨论】:

  • 试试这个.. 你需要改变一点 CI 才有例外> stackoverflow.com/questions/15858372/…
  • 再想你可以改变错误显示而不是跳过核心更改。你可以将 db 错误设置为等于默认的 500 错误页面。这样你根本不需要尝试 catch。 .

标签: php sql database codeigniter postgresql


【解决方案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) {
   ...

【讨论】:

    猜你喜欢
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 2011-11-22
    相关资源
    最近更新 更多