您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

mysql_insert_id的疑问

2024/8/26 18:28:38发布51次查看
create table `create_id` ( `id` int(10) unsigned not null auto_increment comment '生成自增user_id', `v` varchar(1) not null comment '用于生成新的id', primary key (`id`), unique key `v` (`v`)) engine=myisam default charset=utf8 ;replace into `create_id` set `v`='1' ;
执行这条sql之后,用mysql_insert_id无法获得insert id。有什么方法/函数能获得replace into产生的新id?
回复讨论(解决方案) replace 指令可能产生,也可能不产生新的 id
所以获取不到是正常的
那么 有什么方法/函数能获得replace into产生的新id?
答案是没有,但你可以指定 id
replace 指令可能产生,也可能不产生新的 id
所以获取不到是正常的
那么 有什么方法/函数能获得replace into产生的新id?
答案是没有,但你可以指定 id
按照我的表结构,且每次均执行同一个sql,也有可能不产生新的id?
v是唯一的,我每次都reaplace into同一个值,id应该会每次都自增1才对呀?
被你忽悠了!
刚才测试了一下,是能取到的
而且我看到php手册里有这么一段提示:
warning
mysql_insert_id() 将 mysql 内部的 c api 函数 mysql_insert_id() 的返回值转换成 long(php 中命名为 int)。如果 auto_increment 的列的类型是 bigint,则 mysql_insert_id() 返回的值将不正确。可以在 sql 查询中用 mysql 内部的 sql 函数 last_insert_id() 来替代。
replace into `create_id` set `v`='1';select last_insert_id() as `id` from `create_id`;
这样确实能返回最新的id呀。
select last_insert_id() as `id` from `create_id`;
?
select id from `create_id` order by id desc limit 1
不是一?
被你忽悠了!
刚才测试了一下,是能取到的
呃。。。我看php手册里面有一个老外这么写到:
athies at gmail dot com 21-jul-2005 11:36
just a quick note. mysql_insert_id() does work with replace. 
select last_insert_id() as `id` from `create_id`;
?
select id from `create_id` order by id desc limit 1
不是一?
并发的情况下, order by id desc 可能就是别人的id了
last_insert_id() 是在某个数据库连接的范围内吗? 原来这样也可以获id,学习了
select id from tb  order by id desc limit 1
select id from tb  order by id desc limit 1
这个只可以获取库里面的id吧?楼主是在插入数据的时候,要获取当前id。
我用tp写的:        
        $form=m('member');
        $sql=show table status where name='fht_member';
        $rs=$form->query($sql);
        $mid=$rs[0]['auto_increment'];
返回记录集有个['auto_increment'],就是当前插入的自增id 后来发现mysql_insert_id()真能取到,感谢各位的踊跃发言
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product