1、不要在循环里查询数据库
弊端:用户体验差,增加数据库的并发量
如果有100个订单,那就要循环100次,即使每次查询只要0.01s,100次也有1s了。
在循环里面查询数组实例
$backData = [];
foreach($orderList as $key=>$value){
$new = $value;
$product = new mProduct();
$pInfo = $product->getInfoById($value['pID']);
$image = '';
if($pInfo){
$image = $pInfo['Image'];
}
$new['Image'] = $image;
array_push($backData,$new);
}
解决办法:
可以先获得所有的产品id后,一次性查询出所有的产品信息,然后在循环查询出的产品信息,根据产品id和订单信息做关联
$backData = [];
$ids = [];
foreach($orderList as $key=>$value){
$new = $value;
array_push($ids,$new['pid']);
....
array_push($backData,$new);
}
$product = new mProduct();
if($ids){
$productsInfo = $product->getInfoById($ids);
foreach($backData as $k=>&$v){
$v['Image'] = $productsInfo[$v['pID']]['Image'];
}
}
附:产品查询函数getInfoById根据传入的是数组还是字符串进行数据库操作