首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_insert_id()在php中,不返回最后插入id?

mysql_insert_id()在php中,不返回最后插入id?
EN

Stack Overflow用户
提问于 2013-09-17 11:10:02
回答 5查看 1.7K关注 0票数 1

这是我的Mysql查询。在我的表Id中是Auto-Increment类型。

代码语言:javascript
复制
$sql ="INSERT INTO product_detail (master_detail_id,Product_code,Product_label) 
values
('8330','TOTAL','products'),('8330','010290','demo'),('8330','010639','Live demo'),
('8330','020900','demo fat'),('8330','030344','demos')";

 $insertDetails = mysql_query( $sql);
echo "last insert id-->".mysql_insert_id();

我得到的是最后一次插入id->1,但我应该得到5。我不知道为什么会发生这种事?

表结构

代码语言:javascript
复制
     id            bigint(250)  No  None    AUTO_INCREMENT  
Product_code       varchar(20)  latin1_swedish_ci       No  
Product_label      varchar(500) latin1_swedish_ci       No  
master_detail_id   bigint(250)          No  None    
EN

回答 5

Stack Overflow用户

发布于 2013-09-17 11:14:42

对于多行INSERT语句,mysql_insert_id()返回第一个自动生成的AUTO_INCREMENT值;如果没有生成此类值,则返回插入到AUTO_INCREMENT列中的最后一个显式值。

票数 4
EN

Stack Overflow用户

发布于 2013-09-17 11:12:52

如果将id列指定为mysql_insert_id(),则将返回id。您应该注意到,如果id列是BIGINT类型,那么函数返回的结果可能是错误的(这也是php:http://php.net/manual/en/function.mysql-insert-id.php中指定的)。

票数 2
EN

Stack Overflow用户

发布于 2013-09-17 11:15:02

对于多插入mysql_insert_id()返回第一个插入,您需要执行5个单独的查询,在末尾运行mysql_insert_id(),或者执行

代码语言:javascript
复制
SELECT MAX(master_detail_id) FROM product_detail or 
SELECT master_detail_id FROM product_detail 
ORDER BY master_detail_id DESC LIMIT 1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18848279

复制
相关文章

相似问题

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