如何在while循环中排序

时间:2016-08-02 13:56:58

标签: php mysql sorting

你好,这是我目前的代码:

$sqlpack = "Select * from package_in_plan where plan_id='$package_id' order by plan_id";
$planres = mysqli_query($conn,$sqlpack);

$plan = array();
while ($row1 = mysqli_fetch_assoc($planres)){
    $plan[] = $row1['package_id'];
}

$plan_1 = implode(',', $plan);
for ($x = 0; $x < count($plan); $x++) {
    $sql_service = "Select * from service_in_package where package_id='".$plan[$x]."'";
    $chid = mysqli_query($conn,$sql_service);

    while ($row = mysqli_fetch_array($chid)){
        $ch_id = $row['service_id'];

        $sql = "Select * from itv where status='1' and id='$ch_id' order by number asc";
        $results = mysqli_query($conn,$sql);

        while ($row = mysqli_fetch_array($results)){
            $nr = $row['id'];
            $namn = $row['name'];
            $chnr = $row['number'];
            echo $nr;
            echo $namn;
            echo $chnr;
        }
     }
}

我需要的是按数字排序的输出($ chnr),现在我的代码没有排序,因为它从前一个select($ ch_id)接收特定的id。 我如何让$ results的输出进行排序&#34;按数字排序&#34;。 itv表中的数字是INT。

1 个答案:

答案 0 :(得分:0)

您可以使用子查询,这会产生可以排序的单个查询。

$sql = "Select * from itv where status='1' and id IN 
(Select service_id from service_in_package where package_id IN 
(Select package_id from package_in_plan where plan_id='$package_id' order by plan_id)) 
order by number asc";
$results = mysqli_query($conn,$sql);

while ($row = mysqli_fetch_array($results)){
    $nr = $row['id'];
    $namn = $row['name'];
    $chnr = $row['number'];
    echo $nr;
    echo $namn;
    echo $chnr;
}