2016-11-20 3 views
0

私は私のPHPの2つのテーブルから自分のデータを取り出し、1つのjsonオブジェクトでそれをエンコードします。私はそれがディスプレイを2倍にすることを除いてすべて私が必要なものを持っています。私のチームンはマッチテーブルにあります。配列0から始めるのではなく、スケジュール表の後に開始します。アレイ7です。なぜこれが起こるのかわかりません。jsonで私の表示を倍増させる理由

ここは私のPHPです。

$sql = "SELECT * from schedule, matches;"; 
$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("start"=>$row[4],"end"=>$row[5],"venue"=>$row[6], "teamone"=>$row[8], "teamtwo"=>$row[9], 

"s_name"=>$row[17])); 

} 


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

mysqli_close($con); 
?> 

ここは私のディスプレイです。あなたが見ることができるように4つのディスプレイがありますが、私のデータベースには2つしかありません。それはディスプレイを2倍にします。どのように私はこれを修正するのですか?おかげ

{ "schedule_response":[ 
      {"start":"2016-11-10 00:00:00","end":"2016-11-04 00:00:00","venue":"bbbb","teamone":"aaa","teamtwo":"bbb", 
      "s_name":"hehehe"}, 
      {"start":"2016-11-23 00:00:00","end":"2016-11-24 00:00:00","venue":"bbbbbbbb","teamone":"aaa","teamtwo":"bbb", 
      "s_name":"hehehe"}, 
      {"start":"2016-11-10 00:00:00","end":"2016-11-04 00:00:00","venue":"bbbb","teamone":"ehe","teamtwo":"aha", 
      "s_name":"aaa"}, 
      {"start":"2016-11-23 00:00:00","end":"2016-11-24 00:00:00","venue":"bbbbbbbb","teamone":"ehe","teamtwo":"aha", 
      "s_name":"aaa"}]} 

は、私は私が開始、終了及び1つのクエリ内のスケジュール表から会場を必要としながら、試合からteamone、teamtwoとs_name値を取得する必要があります。 Schedule table

Matches Table

+0

あなたの配列を印刷して、各行に二重項目があるかどうかを確認してください。 –

答えて

0

ので、あなたのSQLクエリを、あなたは(あなたは、両方のテーブルからの結果を選択する方法があることを定義する)グループのいくつかのフォームを実行するためにを忘れてはならない。

$sql = "SELECT * from schedule s, matches m GROUP BY s.id"; //I assume that your table schedule has an `id` 

それとも、あなたができます読みやすくするために、クエリをリワーク:もちろん

$sql = "SELECT s.*, m.* FROM schedule s 
     INNER JOIN matches m ON m.schedule_id = s.id 
     GROUP BY s.id"; //I assume that you have such database design that you have defined foreign key on table `matches`. 

を、上記INNER JOINLEFT OUTER JOINかもしれない - それはすべてのDEPEデータベース設計上のnds。

+0

うまく動作します。しかし、マッチテーブルteamone、teamtwo、およびs_nameからの値はNULLを返しています – orange

+0

ありがとうございます。それは完全に最初のものです。 – orange

0

I)は、(それがmysqli_fetch_arrayに問題があると思います。

Can you please change mysqli_fetch_array() to mysqli_fetch_assoc() 
+0

すべてのデータをNULL値として与えます。そして、多くの行で未定義のオフセット。 – orange

+0

indexを使用していないfield_nameを使用して値にアクセスしてください。例えば ​​'venue'があなたのdbテーブルの列名なら$ row ['venue']; –

+0

はまだ私に二重表示を与えます – orange

関連する問題