插入失败后 insert_id() 会返回什么?
4 回答
我认为这取决于您使用的驱动程序。在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
参数:
资源 $link_identifier [可选]返回:
类型:int描述:上一个查询成功时为 AUTO_INCREMENT 列生成的 ID,如果上一个查询没有生成 AUTO_INCREMENT 值,则为 0,如果没有建立 MySQL 连接,则为 false。
1.- 所以它可以返回一个 ID,0(零)或 false。
2.- 当你要求 afailed insert
它应该返回 0(零)。
请注意,有一个at sign (@)
错误运算符将忽略mysql_insert_id
PHP 函数返回的任何错误消息。
如果您查看数据库驱动程序本身,每个版本的insert_id
实现方式都不同,具体取决于底层数据库。例如,MySQLinsert_id
函数只是 的包装器mysql_insert_id
,它返回:
上一个查询成功时为 AUTO_INCREMENT 列生成的 ID,如果上一个查询没有生成 AUTO_INCREMENT 值,则为 0,如果没有建立 MySQL 连接,则为 FALSE。
另一方面,postgres 函数显式返回一个 ID(尽管我认为如果查询本身失败可能会引发异常):
$query = $this->query($sql);
$query = $query->row();
return (int) $query->ins_id;
大多数 codeigniter 函数如果没有值可以返回 false。我的意思是它不会返回 insert_id ,因为由于错误而没有提供 insert_id 。
它仅在执行数据库插入时返回 id。
如果成功,它将通过先前的查询生成 AUTO_INCREMENT 列。如果失败,则返回 0 如果没有建立 MySQL 连接,则返回 FALSE。