类别:PHP问题 / 日期:2019-12-02 / 浏览:59 / 评论:0

有营业需求须要一次性轮回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大批数据入库怎样处置惩罚的细致内容,更多请关注ki4网别的相干文章!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。