Codeigniter中的insert_id()是否在查询失败时返回false?

时间:2012-05-08 17:43:57

标签: codeigniter

插入失败后insert_id()会返回什么?

4 个答案:

答案 0 :(得分:10)

我认为这取决于您使用的驱动程序。在mysql的情况下,函数定义是:

/**
* Insert ID
*
* @access   public
* @return   integer
*/
function insert_id()
{
    return @mysql_insert_id($this->conn_id);
}

现在阅读mysql_insert_id

  

mysql_insert_id(PHP 4,PHP 5)获取上次查询中生成的ID

     

参数:
  resource $ link_identifier [可选]

     

返回:
  键入:int

     

描述:为。生成的ID   AUTO_INCREMENT列由上一次查询成功,如果为0   以前的查询不会生成AUTO_INCREMENT值,如果是,则生成false   没有建立MySQL连接。

1.-因此它可以返回ID,0(零)或假 2.-当你要求failed insert它应该返回0(零)。


请注意,有at sign (@)错误运算符将忽略mysql_insert_id PHP函数返回的任何错误消息。

答案 1 :(得分:3)

如果查看数据库驱动程序本身,insert_id的每个版本的实现方式都不同,具体取决于底层数据库。例如,MySQL insert_id function 只是mysql_insert_id的包装,它返回:

  

上一次成功查询为AUTO_INCREMENT列生成的ID,如果上一个查询未生成AUTO_INCREMENT值,则为0;如果未建立MySQL连接,则为FALSE。

另一方面,postgres function显式返回一个ID(虽然我认为如果查询本身失败可能会引发异常):

    $query = $this->query($sql);
    $query = $query->row();
    return (int) $query->ins_id;

答案 2 :(得分:1)

如果大多数codeigniter函数没有给您的值,则返回false。我的意思是它不会返回insert_id,因为由于错误而没有insert_id给出。

答案 3 :(得分:1)

仅在执行数据库插入时返回id。

如果成功,它将通过上一个查询生成AUTO_INCREMENT列 如果是failur,则返回0 如果没有建立MySQL连接,则返回FALSE。