php - 需要帮助优化 PHP 函数

标签 php mysql optimization

我假设我需要在 for 循环之前加入两个查询,但优化以下代码的最佳方法是:

$LocationArray0 = array();
$LocationArray1 = array();
$LocationArray2 = array();
$LocationArray3 = array();
$LocationArray4 = array();

foreach($Bodyshops as $Bodyshop) {
    $Query = "SELECT BodyshopID, BodyshopName, BodyshopLongitude, BodyshopLatitude FROM FusionBodyshops WHERE BodyshopID = '$Bodyshop'";
    $result = mysqli_query($db, $Query); 
    $rows = mysqli_num_rows($result);
    if ( $rows != 0 ) {
        for ( $i = 0; $i < $rows; $i ++ ) {
            $row = mysqli_fetch_array($result, MYSQL_ASSOC);
            $BodyshopID = $row['BodyshopID'];
            $BodyshopName = $row['BodyshopName'];
            $BodyshopLatitude = $row['BodyshopLatitude'];
            $BodyshopLongitude = $row['BodyshopLongitude'];
            $query2 = "SELECT Tier FROM FusionBodyshopSettings WHERE BodyshopID = '$Bodyshop' AND BusinessID = '$UserCompany'";
            $result2 = mysqli_query($db, $query2); 
            $row2 = mysqli_fetch_array($result2, MYSQL_ASSOC);
            if ( $row2['Tier'] == "0") {
                array_push($LocationArray0, "'" . str_replace("'", "",$BodyshopName) . "', '" . $BodyshopLatitude . "', '" . $BodyshopLongitude . "'"); //$row['BodyshopID'] . ", " .
            }elseif ( $row2['Tier'] == "1") {
                array_push($LocationArray1, "'" . str_replace("'", "",$BodyshopName) . "', '" . $BodyshopLatitude . "', '" . $BodyshopLongitude . "'"); //$row['BodyshopID'] . ", " .
            }elseif ( $row2['Tier'] == "2") {
                array_push($LocationArray2, "'" . str_replace("'", "",$BodyshopName) . "', '" . $BodyshopLatitude . "', '" . $BodyshopLongitude . "'"); //$row['BodyshopID'] . ", " .
            }elseif ( $row2['Tier'] == "3") {
                array_push($LocationArray3, "'" . str_replace("'", "",$BodyshopName) . "', '" . $BodyshopLatitude . "', '" . $BodyshopLongitude . "'"); //$row['BodyshopID'] . ", " .
            }elseif ( $row2['Tier'] == "4") {
                array_push($LocationArray4, "'" . str_replace("'", "",$BodyshopName) . "', '" . $BodyshopLatitude . "', '" . $BodyshopLongitude . "'"); //$row['BodyshopID'] . ", " .
            }
        }
    }
}

任何帮助将不胜感激!

最佳答案

您可以将所有代码替换为以下内容:

SELECT a.BodyshopID
     , a.BodyshopName
     , a.BodyshopLongitude
     , a.BodyshopLatitude 
     , b.Tier
  FROM FusionBodyshops a
  JOIN FusionBodyshopSettings b
    ON b.BodyshopID = a.BodyshopID 
 WHERE a.BodyshopID IN ($Bodyshops) -- a list of bodyshops
   AND b.BusinessID = $UserCompany;

现在查看准备好的语句。

关于php - 需要帮助优化 PHP 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35608645/

相关文章:

PHP MySQL - 编辑数据中 undefined index

php - 将列从一个表复制到另一个具有多行的mysql

sql - mySQL ORDER优化

c++ - 3D 阵列的空间局部性?

php - 这段更新 Paypal 按钮的代码有什么问题?我得到 "buttontype invalid error"

PHP 数据库中的错误字符集

javascript - 如何使用 php 发布数组并循环遍历它?

mysql - 解释一下MySQL中这个表中的key_len

php - 如何在 Laravel 5.1 中获取数据库中的表列表

PHP,文档阅读库