十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
2种办法
创新互联建站成立于2013年,我们提供高端成都网站建设、成都网站制作、成都网站设计、网站定制、成都营销网站建设、微信平台小程序开发、微信公众号开发、网站推广服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为卫生间隔断企业提供源源不断的流量和订单咨询。
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);
你看看你的程序里面有没有用到递归,或者有没有死循环。
另外解决此类问题的主要思想就是分而治之
我觉得是foreach的机制的问题
foreach($arr as $key=$value){}这里面的$value是每次循环是把数组中元素的值赋值给$value
而foreach($arr as $key=$value){}这里的$value是引用赋值。
两者有什么区别呢?带引用的$value可以$value='aaa';直接改变元素的值;还有一个重要的,就是最后一次循环之后$value的值还会保留;
你这里是foreach($obj as $value){}对象默认是引用传值;所以循环过后要unset($obj);
php里还有一个函数clearstatcache(true)清楚文件状态缓存,虽然受影响的函数没有simplexml_load_file(),不过还是可以试试;
还有mysql系列的函数很多也不是很稳定,有时候不知道会出什么问题;建议用PDO;
深感php里面的坑太多了,稍不注意就跳进去了。
很多时候数据库中表的主键都是自增id,
而在连续插入数据时,需要前一条的自增id时候,可以使用PHP中的
mysql_insert_id();函数
如果我的回答没能帮助您,请继续追问。
您也可以向我们团队发出请求,
这个看情况了,首先看看是不是有使用自增列的必要,如果有必要前期要有预见性,对于可能会出现溢出的情况,则尽量使用bigint类型,当然这个要多占用存储空间。如果删除操作比较规则,比如会定期删除较早的数据,那么可以在id即将溢出的时候重置种子,从头开始自增,如果不能循环使用id值得话只能在即将溢出的时候修改表,用更大的数据类型来作为自增列的类型,这个过程因为涉及大量的数据更新插入操作,速度会很慢,通常尽量避免。如果id快溢出了,最好新建一个表来存储新增的数据。
在数据库里选择你这张表里的id值属性,并修改为自增量就ok了。id是不能为0的,好好看下数据库相关的书。【望采纳】
把int改为bigint.
---
如果数据量过大
应考虑备份历史数据
否则也影响性能