Codeigniter3:如何从db->插入获取错误或成功信息?

时间:2016-03-31 05:39:57

标签: codeigniter codeigniter-3

我想从$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 (无论插入是成功还是失败)

2 个答案:

答案 0 :(得分:2)

$this->db->_error_message()已过时,因此请尝试使用以下功能。

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

答案 1 :(得分:0)

有两种方法可以提供有意义的信息,但我在CI3文档中没有看到信息是权威,因此我认为这是一个弱势解决方案:

A ...

$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

但是,我从文档中不知道这是否确实始终得到了保证。

请注意:这将在失败上生成一个无法解析的格式化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