繁体   English   中英

PHP Mysqli从数据库转换为JSON读取对象数组

[英]PHP Mysqli Reading Array of Objects from Database converting to JSON

$query = "SELECT guid, name, location, description, datetime FROM event";

   $result = doSQLTermError($db_connect, $query);

   while($obj = mysqli_fetch_object($result)){
      $guid = $obj->guid;

      $event_details = new stdClass;

      $event_details->$guid = new stdClass;
          $event_details->$guid->name = $obj->name;
          $event_details->$guid->location = $obj->location;
          $event_details->$guid->description = $obj->description;
          $event_details->$guid->datetime = $obj->datetime;   
   }

   $event = json_encode($event_details);

上面的代码为我提供了以下所需的JSON输出:

"data":
{
   "f4ef863ef80b07036de08457ccdf51e3f814":
    {
       "name":"adsg",
       "location":"uhjty;",
       "description":"y;hy",
       "datetime":"2018-01-01 00:00:00"
    }
}

但是,它仅从数据库中读取最后一个事件记录。 如何列出数据库中的所有事件,但保持上述JSON格式? 谢谢。

移动$event_details = new stdClass; 退出while循环。
您每次都用一个新实例覆盖$event_details变量,因此您将从上一个循环中$event_details已经存在于其中的数据。

您必须使用数组从SQL查询获取所有数据:

$query = "SELECT guid, name, location, description, datetime FROM event";

$result = doSQLTermError($db_connect, $query);
$events = [];

while($obj = mysqli_fetch_object($result)){
     $guid = $obj->guid;
     $event_details = new stdClass;
     $event_details->$guid = new stdClass;
     $event_details->$guid->name = $obj->name;
     $event_details->$guid->location = $obj->location;
     $event_details->$guid->description = $obj->description;
     $event_details->$guid->datetime = $obj->datetime;
     $events[] = json_encode($event_details);
}
    $query = "SELECT guid, name, location, description, datetime FROM event";

   $result = doSQLTermError($db_connect, $query);

   $event_details = new stdClass;

   while($obj = mysqli_fetch_object($result)){
      $guid = $obj->guid;

      $event_details->$guid = new stdClass;
          $event_details->$guid->name = $obj->name;
          $event_details->$guid->location = $obj->location;
          $event_details->$guid->description = $obj->description;
          $event_details->$guid->datetime = $obj->datetime;   
   }

   $event = json_encode($event_details);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM