【问题标题】:Why do i double my display in json为什么我在 json 中的显示加倍
【发布时间】:2016-11-20 10:26:05
【问题描述】:

所以我从我的 php 中的两个表中获取我的数据并将其编码到一个 json 对象中。我得到了我需要的一切,除了它使显示加倍。我的teamone位于比赛表中。它不是从数组 0 开始,而是在调度表之后开始。这是数组 7。我不知道为什么会这样。

这是我的 php.ini 文件。

  $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);
?>

这是我的展示。如您所见,有四个显示器,但在我的数据库中它只有 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"}]}

我需要从比赛中获取 teamone、teamtwo 和 s_name 值,而我需要在一个查询中从日程表中获取开始、结束和场地。 Schedule table

Matches Table

【问题讨论】:

  • 只打印你的数组并检查每一行是否有双重输入

标签: php mysql json


【解决方案1】:

由于您的 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 JOIN 可能是LEFT OUTER JOIN - 这完全取决于您的数据库设计。

【讨论】:

  • 很好用。但是匹配表 teamone、teamtwo 和 s_name 中的值返回 null
【解决方案2】:

我认为这是 mysqli_fetch_array() 的问题。

Can you please change mysqli_fetch_array()  to mysqli_fetch_assoc()

【讨论】:

  • 它将所有数据作为空值。多行未定义的偏移量。
  • 请使用 field_name 访问值,而不是使用索引。例如,如果 'venue' 是您的数据库表列名,则 $row['venue'];
  • 仍然给我双重显示先生
  • 只需打印您的 $response 数组,它显示的是什么,重复输入?
  • 它只是打印名称 Array sir
猜你喜欢
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多