2017-02-14 6 views
0

私のjsonレスポンスで1,2番目と3番目の行に対して同じ値を取得しています。第2列に想定される結果が第2列に表示され、第1列にある第3結果が第3列に表示されます。 Iveはすべてを試してみましたが、依然として良い結果は得られませんでした。事前のおかげでここ私のsqlクエリは、jsonレスポンスで3行の同じデータ型を返す

$sql = "select 
      e_name, 
      a_shortcut, 
      case 
      when t_rank = 1 then '1st' 
      when t_rank = 2 then '2nd' 
      when t_rank = 3 then '3rd' 
      end as t_rank 
     from 
      team inner join event on team.EID = event.eid Where e_type = 'nonsport' group by event.eid";       

     $con = mysqli_connect($server_name,$mysql_user,$mysql_pass,$db_name); 

     $result = mysqli_query($con,$sql); 


     $response = array(); 

     while($row=mysqli_fetch_array($result)) 
     { 
     array_push($response, array("e_name"=>$row[0],"1st"=>$row[1], 
     "2nd"=>$row[2], "3rd"=>$row[2])); 

     } 
     echo json_encode (array("nresults"=>$response)); 

私の2番目と3番目の行がある場合、イムは私のサーバー応答で取得するものである[2]及び[2]。

{"nresults":[{"e_name":"Amateur Photography Contest","1st":"AAA","2nd":"3rd","3rd":"3rd"}]} 

私は

1st"=>$row[1], 
     "2nd"=>$row[2], "3rd"=>$row[2] into 1st"=>$row[1], 
     "2nd"=>$row[1], "3rd"=>$row[1] 

を変更した場合はそれは私の期待出力され、この

{"nresults":[{"e_name":"Amateur Photography Contest","1st":"AAA","2nd":"AAA","3rd":"AAA"}]} 

のようになります。 AAAランク1である場合には、BBBは、この

{"nresults":[{"e_name":"Amateur Photography Contest","1st":"AAA","2nd":"BBB","3rd":"CCC"}]} 
+0

クエリの '第一' で、どの列? –

+0

MySQL以外のものはすべて削除し、http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-を参照してください。 be-a-very-simple-sql-query – Strawberry

+0

@DaniloBustos 1位2位と3位はランクに応じてa_shortcutにする必要があります – orange

答えて

0

のような3

はこのように2とCCCてみてくださいされている:

$sql = "select 
      e_name, 
      a_shortcut, 
      GROUP_CONCAT(case when t_rank = 1 then a_shortcut end separator ',') as rank1, 
      GROUP_CONCAT(case when t_rank = 2 then a_shortcut end separator ',') as rank2, 
      GROUP_CONCAT(case when t_rank = 3 then a_shortcut end separator ',') as rank3 
     from 
      team inner join event on team.EID = event.eid Where e_type = 'nonsport' group by event.eid";       

     $con = mysqli_connect($server_name,$mysql_user,$mysql_pass,$db_name); 

     $result = mysqli_query($con,$sql); 


     $response = array(); 

     while($row=mysqli_fetch_array($result)) 
     { 
     //$ar=explode(',',$row['group_con']); 
     array_push($response, array("e_name"=>$row[0],"1st"=>$row['rank1'], 
     "2nd"=>$row['rank2'], "3rd"=>$row['rank3'])); 

     } 
     echo json_encode (array("nresults"=>$response)); 
+0

私の答えを編集してください。 –

+0

{"e_name": "Yell Competition"、 "First": "1st"、 "Second": "1st"、 "Third": "3rd"}]}なぜ私はこの卿を得ますか?私は1つのオブジェクトにそれを得るが、異なるデータ – orange

+0

私の答えをもう一度試してください。 –

関連する問題