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

php大量数据入库怎么处理

2025/10/14 7:24:54发布14次查看
有业务需求需要一次性循环n条数据,插入或更新数据库时,如果单纯的循环,插入/更新,会消耗太多的数据库资源
以下是一种简单的解决方案
数据库的insert是可以批量更新的,当有大量数据循环insert时,可以将数据先保留不执行插入命令,到最后一条时一次性插入,例如tp的addall()方法;  (推荐学习:php视频教程)
数据库的update 如果使用case when 的话,也是可以批量更新的。
本文主要讲关于批量insert;
生成一个订单
正常情况的语句为:
insert into order (`goods_id`,`num`,`price`) values (1,1,'10.00');//封装成函数function add_order($goods_id,$num,$price){$db->query("insert into order (`goods_id`,`num`,`price`) values ($goods_id,$num,$price)");}
假设有一个用户,一次性将购物车的1000个商品结算成订单,生成1000个订单时;
for ($i=0;$i<1000;$i++){$db->query("insert into order (`goods_id`,`num`,`price`) values ($goods_id,$num,$price)");}//这样的话会导致服务器资源占用过大,网站卡死//所以,我们可以$sql = "insert into order (`goods_id`,`num`,`price`) values ";for ($i=0;$i<1000;$i++){ if($i==0){ $sql.="($goods_id,$num,$price)"; }else{ $sql.=",($goods_id,$num,$price)"; }}$db->query($sql);
大概意思就是这样了,批量更新实现比较麻烦一点,就不发了,以下是批量更新的sql执行语句
update tiyan.dm_user_cupboard set `res_id` = case `id` when 1041 then '1' when 1058 then '1' when 1055 then '1' end,`food_code` = case `id` when 1041 then '68' when 1058 then '47' when 1055 then '49' end,`food_name` = case `id` when 1041 then '红枣' when 1058 then '莲藕' when 1055 then '洋葱' end,`num` = case `id` when 1041 then '2' when 1058 then '3' when 1055 then '2' end,`level` = case `id` when 1041 then '2' when 1058 then '2' when 1055 then '2' end,`update_time` = case `id` when 1041 then '2017-12-09 21:40:06' when 1058 then '2017-12-09 21:40:06' when 1055 then '2017-12-09 21:40:06' end where id in ( 1041,1058,1055 )
以上就是php大量数据入库怎么处理的详细内容。
该用户其它信息

VIP推荐

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