【问题标题】:Custom Error in Active Record CodeigniterActive Record Codeigniter 中的自定义错误
【发布时间】:2014-08-08 06:19:30
【问题描述】:

我正在使用 HMVC。我的问题很简单。我们如何捕捉活动记录中的错误? 我们如何从模型(活动记录)向控制器返回自定义错误?

实际上,msn 列是唯一的,所以当我输入重复值时,它的显示错误就像

错误号:1062

密钥“msn”的重复条目“3696003284”

但我想显示自定义错误而不是这个。

我的简单代码是:

function insert_data($msn_number, $date_val, $min_val, $max_val, $avg_val,$counter)
{
    for($i=0;$i<$counter;$i++)
    {
        $data = array(
            'msn'     => $msn_number[$i],
            'date'    => $date_val[$i],
            'min_val' => $min_val[$i],
            'max_val' => $max_val[$i],
            'average' => $avg_val[$i]
        );
        $result = $this->db->insert('storage_data', $data);
        if(!isset($result))
         {
           echo "custom Error";
          }

    }
 }

}

我想知道这个问题的答案,请帮助我!

【问题讨论】:

  • 我不知道我是怎么发现这个错误的?
  • 任何想法,如果存在,我可以检查查询中是否已经存在“msn”,然后更新该行,否则插入新行?

标签: php mysql codeigniter activerecord custom-errors


【解决方案1】:

你可以试试这个:

$result = $this->db->insert('storage_data', $data);
if (!$result) {
    $data['msg'] = $this->db->_error_message();
    $this->load->view('viw_db_error', $data); // Create a viw_db_error.php view
}

确保在application/config/database.php 文件中将DB_DEBUG 设置为FALSE,否则如果出现mysql 错误,将停止执行。

更新:

或者,您可以在每次插入新记录之前进行查询,但这会非常昂贵,因为您是在循环中执行此操作,并且会发送许多查询/请求:

$q = $this->db->query("select msn from storage_data where msn = $msn_number[$i]");
if( $q->num_rows() ) {
    // It already exists so maybe display a message
}

【讨论】:

  • 感谢 WEREWOLF 的回复,但实际上我需要任何其他方式而不使 DB_DEBUG FALSE?
  • 感谢关注!但是这样查询会运行 100 次,所以我认为它会使系统变得非常慢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 2014-10-19
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多