在插入失败后,insert_id()返回什么?
发布于 2012-05-09 02:10:10
我想这取决于你使用的驱动程序。在mysql情况下,函数定义为:
/**
* Insert ID
*
* @access public
* @return integer
*/
function insert_id()
{
return @mysql_insert_id($this->conn_id);
}现在阅读有关mysql_insert_id的内容
mysql_insert_id (PHP4,PHP5)获取在最后一次查询中生成的ID
参数:
资源$link_identifier可选
返回:
类型: int描述:前一次查询成功时为AUTO_INCREMENT列生成的ID,如果前一次查询没有生成AUTO_INCREMENT值,则为0;如果没有建立MySQL连接,则为false。
1.-因此它可以返回一个ID,0(零)或false。
2.-当你请求一个failed insert时,它应该返回0(零)。
请注意,有一个at sign (@)错误操作符,它将忽略由mysql_insert_id PHP函数返回的任何错误消息。
发布于 2012-05-09 01:57:38
如果您查看数据库驱动程序本身,就会发现每个版本的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;发布于 2012-05-09 01:47:43
大多数codeigniter函数如果没有可以提供的值,就会返回false。我的意思是,它不会返回insert_id,因为由于出现错误,没有insert_id可以给出。
https://stackoverflow.com/questions/10503691
复制相似问题