首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codeigniter中的insert_id()是否在查询失败时返回false?

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

Stack Overflow用户
提问于 2012-05-09 01:43:57
回答 4查看 4.7K关注 0票数 3

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-09 02:10:10

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

代码语言:javascript
复制
/**
* 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函数返回的任何错误消息。

票数 10
EN

Stack Overflow用户

发布于 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 (尽管我认为如果查询本身失败,可能会抛出一个异常):

代码语言:javascript
复制
    $query = $this->query($sql);
    $query = $query->row();
    return (int) $query->ins_id;
票数 3
EN

Stack Overflow用户

发布于 2012-05-09 01:47:43

大多数codeigniter函数如果没有可以提供的值,就会返回false。我的意思是,它不会返回insert_id,因为由于出现错误,没有insert_id可以给出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10503691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档