2017-02-06 10 views
1

これをjson形式でどのようにエンコードしますか?私は "2nd" => $行1、 "3rd" => $行1と同じデータが取り出されている間、私は1位、2位、3位で同じデータを受け取ります。私が3に入れようとすると、それは私にヌルを与えます。誰か助けてください、ありがとう。mysqlからデータを取得すると3行分が返されます

は、ここに私のPHP

$sql = "select 
    n_name, 
    shortcut, 
    case 
    when rank = 1 then '1st' 
    when rank = 2 then '2nd' 
    when rank = 3 then '3rd' 
    end as rank 
from 
    team inner join nonsport on team.n_id = nonsport.n_id group by n_name order by n_name asc";       

$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("n_name"=>$row[0], "1st"=>$row[1], "2nd"=>$row[2], "3rd"=>$row[2])); 
} 



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

私の予想される出力がある

例です。ショートカットにはa、b、cがあり、ランクa = 1 b = 2 c = 3;

次に、1st = a、2nd = b、3rd = c;

第一= A、第二= A、第三=

Tables

+0

同じインデックスを複数回割り当てているので、同じ結果が得られるはずです。次のように、ランク付けの値を確認する必要があります。あなたは何をしようとしているのですか?期待される出力は何ですか? – Mohammad

答えて

0

クエリがローごとに3つの属性 "n_name、ショートカット、ランクを" 返すとされている取得何イム

ランクは「1st」、「2nd」、「3rd」になりますので、3つのランクを1つの行に表示することはありません。

while($row=mysqli_fetch_array($result)){ 
    $array = []; 
    $array["n_name"] = $row[0]; 

    if($row[1]=='a'){ 
     $array["1st"] = $row[1]; 
    } elseif($row[1]=='b'){ 
     $array["2nd"] = $row[1]; 
    } elseif($row[1]=='c'){ 
     $array["3rd"] = $row[1]; 
    } 

    array_push($response, $array); 
} 
+0

それは私にはn_nameと何も与えません – orange

+0

あなたのテーブルを共有することができますか? – Mohammad

+0

は2つのテーブルの写真を掲載しました – orange

関連する問題