Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Active Record Codeigniter中的自定义错误_Php_Mysql_Codeigniter_Activerecord_Custom Errors - Fatal编程技术网

Php Active Record Codeigniter中的自定义错误

Php Active Record Codeigniter中的自定义错误,php,mysql,codeigniter,activerecord,custom-errors,Php,Mysql,Codeigniter,Activerecord,Custom Errors,我正在使用HMVC。我的问题很简单。如何捕获活动记录中的错误? 如何将自定义错误从模型(活动记录)返回控制器 实际上,msn列是唯一的,所以,当我输入重复值时,它的显示错误如下 错误号码:1062 密钥“msn”的重复条目“3696003284” 但是我想显示自定义错误而不是这个 我的简单代码是: function insert_data($msn_number, $date_val, $min_val, $max_val, $avg_val,$counter) { for($i=0;$

我正在使用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\U编号、$date\u val、$min\u val、$max\u val、$avg\u val、$counter)
{
对于($i=0;$i$msn\U编号[$i],
“日期”=>$date\u val[$i],
“最小值”=>$min\u val[$i],
“max_val”=>max_val[$i],
“平均值”=>$avg_val[$i]
);
$result=$this->db->insert('storage\u data',$data);
如果(!isset($result))
{
回显“自定义错误”;
}
}
}
}

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

您可以尝试以下方法:

$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
}

我不知道我是如何发现这个错误的?有什么想法吗?我能检查一下查询中是否已经存在“msn”吗?如果存在,然后更新该行,否则插入新行?感谢狼人的回复,但实际上我需要任何其他方法,而不使DB_DEBUG为FALSE?谢谢关注!但这样查询将运行100次,所以,我认为这将使系统非常慢!