【问题标题】:Codeigniter3: How to get error or success info from db->insert?Codeigniter3:如何从 db->insert 获取错误或成功信息?
【发布时间】:2016-07-19 09:53:04
【问题描述】:

我想从$CI->db->insert(...) 获取成功和失败的返回信息。

我试图简单地捕捉返回并回显它并打印它,但都没有给我任何有用的东西;我已经尝试过 $CI->db->display_errors() (尽管我实际上并没有在CI docs 中找到它)。

$return = $this->db->insert( "some_table" , $table_data ) ;

print_r( $return  ) ; // 
// OR
print  ( $this->db->display_errors() ) ;

$CI->db->insert(...) 是否提供检查成功/失败的方法?


更新:

在 CI3 中 ...

$this->db->_error_message() 生成错误: Fatal error: Call to undefined method CI_DB_mysqli_driver::_error_message()(带或不带前导下划线).

$this->db->display_errors() 生成错误:Fatal error: Call to undefined method CI_DB_mysqli_driver::display_errors()

$this->db->insert_id()生成0(不管插入成功还是失败)

【问题讨论】:

标签: codeigniter codeigniter-3


【解决方案1】:

$this->db->_error_message() 已弃用,因此请尝试使用以下函数。

$error = $this->db->error(); 

【讨论】:

    【解决方案2】:

    有两种方法可以为我提供有意义的信息,尽管我在 CI3 文档中没有看到该信息是确定性,因此我认为这是一个weak-ish 解决方案:


    一个...

    $return = $this->db->insert( "some_table" , $lvl_data ) 返回...

    // on SUCCESS: 1 ......... which indicates the boolean TRUE, not the number 1
    // on FAILURE: nothing ... which indicates the boolean FALSe
    

    但是,我从文档中不知道这是否始终可以确保。

    请注意:这将在 failure 时生成一个无法捕获的格式化 CI 错误消息,除非您使用影响 $this->db->db_debug ... 请参阅下面的工作示例以了解用法。


    B ...

    $this->db->error() 返回...

    // on SUCCESS: Array ( [code] => 0    [message] => ) 
    // on FAILURE: Array ( [code] => 1054 [message] => Unknown column 'some_bad_column_name' in 'field list' ) 
    

    但是,我不确定(基于CI3 doc[code]=>0 一定等于success


    A+B,带有 $this->db->db_debug ...

    因此,我认为将这两个信息结合起来是松散的指示性:

    $db_debug           = $this->db->db_debug ; //save setting
    $this->db->db_debug = FALSE               ; //disable debugging for queries
    
    $return = $this->db->insert( "some_table" , $lvl_data ) ;
    $error  = $this->db->error ()                           ;
    if ( $error['code'] === 0  &&  $return === true )
      { // almost surely SUCCESS
      }
    
    $this->db->db_debug = $db_debug           ; //set it back
    

    【讨论】:

      猜你喜欢
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      相关资源
      最近更新 更多