[英]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.