插入失败后insert_id()会返回什么?
答案 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。