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