Codeigniter3:如何从 db->insert 获取错误或成功信息?
Posted
技术标签:
【中文标题】Codeigniter3:如何从 db->insert 获取错误或成功信息?【英文标题】:Codeigniter3: How to get error or success info from 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.com/user_guide/database/… 还有这个***.com/questions/7843406/… 使用 if ( $this->db->_error_message() ) echo $this->db->_error_message() ; @AldoZumaran 这些方法已在 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
【讨论】:
以上是关于Codeigniter3:如何从 db->insert 获取错误或成功信息?的主要内容,如果未能解决你的问题,请参考以下文章