重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、没谷歌到php可以用的直接方法,不过可以获取批量插入的第一个自增id
10余年的华州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整华州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“华州网站设计”,“华州网站推广”以来,每个客户项目都认真落实执行。
2、假设批量插入的数据的自增ID是连续的,则可以通过第一个自增ID获取所有自增ID
3、测试批量插入的数据的自增ID是否是连续的,即插入过程中,单独插入其他数据,批量插入的自增ID是否连续
4、生成批量插入10w条数据的sql
5、navicat打开两个页面,一个是上面的sql,一个是一条单独插入的sql(这条sql的test_id,要大于上面sql里随机数的最大值,方便查看)
6、所以可以使用2中的方式获取批量插入的所有自增ID
2种办法
1.修改你的数据库表,将ID设为自增长,注:只有主键才可以设置为自增长
id自增是由mysql负责的,设置id AUTO_INCREMENT 插入时不用插入id值就能实现自增CREATE TABLE `table ` (`id` INT(8) NOT NULL AUTO_INCREMENT, PRIMARY KEY(`id`));
2.代码中进行处理
Statement ps;
ResultSet rs;
int id = 0;
..................
String sql="select max(id) as id from message";
rs = ps.executeQuery(sql);//查询出最大ID
if(rs.next){//如果有ID,原有ID+1
id = rs.getInt("id")+1;
}else{//否则 ID 初始为0
id = 0;
}
//下面接你写的代码就OK了
PreparedStatement ps;
String sql="insert message (id,name,msg) value(?,?,?)"
ps.setString(1,id);
ps.setString(2,name);
ps.setString(3,msg);
很多时候数据库中表的主键都是自增id,
而在连续插入数据时,需要前一条的自增id时候,可以使用PHP中的
mysql_insert_id();函数
如果我的回答没能帮助您,请继续追问。
您也可以向我们团队发出请求,
怎么在thinkphp添加数据时获取自动增长的id?
下面是TP5的方法,TP3的在添加后变量直接就获取了。添加数据后如果需要返回新增数据的自增主键,可以使用 getLastInsID 方法:
Db::name('user')-insert($data);
$userId = Db::name('user')-getLastInsID();或者直接使用 insertGetId 方法新增数据并返回主键值:
Db::name('user')-insertGetId($data);
ThinkPHP
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP 开发框架,遵循 Apache2 开源协议发布,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。
基本特性
简单易用的MVC模式
模型(M):模型的定义由Model类来完成。Model类位于项目目录下面的LibModel目录。
控制器(C):应用控制器(核心控制器)和Action控制器都承担了控制器的角色,区别在于Action控制器完成业务过程,而应用控制器(App类)负责调度控制。Action控制器位于项目目录下面的LibAction目录。
视图(V):模板的实现是和框架无关的,做到了100%分离,可以独立预览和制作。模板目录位于项目目录下面的Tpl目录。
2.独创的核心编译和二分法项目编译机制
ThinkTemplate是一个使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。
如果是固定以10开头,那么可以不要修改数据库的自增ID,新增一个编号ID字段,这个编号ID的格式是:'10'(你定义的编号格式)+自增ID,这样你就能随意变换了。每次插入一条数据成功后,你是可以获取到当前插入的ID的,取到这个ID,然后组合重新更新数据库即可。
希望对你有所帮助~