2016-11-25 83 views
0

這個PHP腳本應該以數組形式返回前五名輸家,前五名增加者和五名最活躍的股票,名爲result。 當我在數據庫中運行查詢時,它返回正確的值,但是當我在瀏覽器中運行PHP腳本時,它不返回第一個數組,它從第二個數組,第二個數組開始,依此類推。 這是腳本:php腳本不返回第一個數組

switch ($which){ 
     case 'top': 
      $sql = "SELECT * FROM market_table ORDER BY price_change DESC LIMIT 5"; 
      $result = $this -> connection->query($sql); 
      if($result->num_rows > 0){ 
       $r = mysqli_query($this->connection,$sql); 
       $res = mysqli_fetch_array($r); 
       $result = array(); 
       while($res = mysqli_fetch_array($r)){ 
        array_push($result,array("sympol"=>$res['sympol'],"o_price"=>$res['o_price'], 
        'e_name'=>$res['e_name'], 'price_change'=>$res['price_change'],'perc_change'=>$res['perc_change'], 
        'c_price'=>$res['c_price'],'volume'=>$res['volume'],'h_price'=>$res['h_price'], 
        'l_price'=>$res['l_price'],'deals_n'=>$res['deals_n'], 
        'value'=>$res['value'])); 
       } 
       echo json_encode(array("result"=>$result)); 
      }   
      else{ 
       echo "top five: 0 results"; 
      } 
     break; 
     case 'bottom': 
      $sql = "SELECT * FROM market_table ORDER BY price_change ASC LIMIT 5"; 
      $result = $this -> connection->query($sql); 
      if($result->num_rows > 0){ 
       $r = mysqli_query($this->connection,$sql); 
       $res = mysqli_fetch_array($r); 
       $result = array(); 
       while($res = mysqli_fetch_array($r)){ 
        array_push($result,array("sympol"=>$res['sympol'],"o_price"=>$res['o_price'], 
        'e_name'=>$res['e_name'], 'price_change'=>$res['price_change'],'perc_change'=>$res['perc_change'], 
        'c_price'=>$res['c_price'],'volume'=>$res['volume'],'h_price'=>$res['h_price'],'l_price'=>$res['l_price'], 
        'deals_n'=>$res['deals_n'], 
        'value'=>$res['value'])); 
       } 
       echo json_encode(array("result"=>$result)); 
      }   
      else{ 
       echo "bottom five: 0 results"; 
      } 
     break; 
     case'most': 
      $sql = "SELECT * FROM market_table ORDER BY deals_n DESC LIMIT 5"; 
      $result = $this -> connection->query($sql); 
      if($result->num_rows > 0){ 
       $r = mysqli_query($this->connection,$sql); 
       $res = mysqli_fetch_array($r); 

       $result = array(); 
       while($res = mysqli_fetch_array($r)){ 
        array_push($result,array("sympol"=>$res['sympol'],"o_price"=>$res['o_price'], 
        'e_name'=>$res['e_name'], 'price_change'=>$res['price_change'],'perc_change'=>$res['perc_change'], 
        'c_price'=>$res['c_price'],'volume'=>$res['volume'],'h_price'=>$res['h_price'],'l_price'=>$res['l_price'], 
        'deals_n'=>$res['deals_n'], 
        'value'=>$res['value'])); 
       } 
       echo json_encode(array("result"=>$result)); 
      }   
      else{ 
       echo "most active five: 0 results"; 
      } 
     break; 
    } 
+2

您正在執行相同的查詢兩次(而不是您當前的問題),並且在循環之前獲取第一行(您當前的問題)。在所有情況下。 – jeroen

回答

1
$res = mysqli_fetch_array($r); 
$result = array(); 

爲什麼你有那些?由於您將結果($ result)初始化爲第二行上的空數組,因此您不保存結果($ res)。這就是你的第一條線消失的地方。