以下是一种简朴的解决方案
数据库的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大批数据入库怎样处置惩罚的细致内容,更多请关注ki4网别的相干文章!