【问题标题】:Dealing with duplicate keys in codeigniter mysql insert处理codeigniter mysql insert中的重复键
【发布时间】:2012-03-06 01:38:10
【问题描述】:

我想做的是这样的:

function registerUser($username, $password){

$this->db->insert('tblUsers', array('username'=>$username, 'password'=>md5($password)));
if($this->db->_error_number()==1062){
    return "DUPLICATE";
}
return true;

}

但是,目前如果有重复的密钥,那么它不会让我到达 _error_number() 位。它显示如下错误:

如何阻止 codeigniter 因错误而放弃并将错误号传递给我以进行适当处理?

谢谢

【问题讨论】:

    标签: mysql codeigniter


    【解决方案1】:

    您可以使用 Codeigniter 访问 MySQL 错误消息:

    $this->db->_error_message();
    

    显然DB_DEBUG需要在数据库配置文件中设置为false:

    确保在数据库配置文件中将 DB_DEBUG 设置为 FALSE,或者 当发生 mysql 错误时,执行将停止(它不会被抛出, 它只是从 php 解释器中退出)

    链接:http://codeigniter.com/forums/viewthread/79950/#413830

    【讨论】:

    • 谢谢,我知道了,我正在使用 _error_number() 来获取上面代码中的错误号。然而,它没有到达那里,它提前放弃,并打印一个错误。
    • 查看我修改后的解决方案。请注意,如果不使用 _error_message()/_error_number(),您将无法再看到 MySQL 错误消息
    【解决方案2】:

    建议:

    $orig_db_debug = $this->db->db_debug;
    
    $this->db->db_debug = FALSE;
    
    RUN QUERY HERE
    
    $this->db->db_debug = $orig_db_debug;
    

    【讨论】:

      猜你喜欢
      • 2013-07-12
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 2017-09-26
      • 2012-10-18
      • 2012-11-05
      相关资源
      最近更新 更多