2016-08-02 114 views
-2

你好,这里是我当前的代码:如何排序在while循环

$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。 如何让$结果的输出按“按数量排序”进行排序。 数字在itv表中为INT。

+1

你知道SQL连接吗? – eggyal

+3

我刚刚回答了这个问题:http://stackoverflow.com/questions/38720440/php-how-to-run-a-while-loop-in-another-while-loop/38722548#38722548解释你为什么不应该在嵌套循环中查询。你的情况更糟,因为你的嵌套是三层! – e4c5

+0

@ e4c5:欢迎来到不同用户每天回答数千次相同问题的精彩世界,这些用户不会在发帖之前懒得进行半点研究...... – eggyal

回答

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; 
} 
+0

504网关超时,有什么想法? –

+0

@SamiH你在数据库表中有多少条记录? – Marco