【问题标题】:How to alter PHP information coming from mySQL before JSON_encode?如何在 JSON_encode 之前更改来自 mySQL 的 PHP 信息?
【发布时间】:2020-08-19 12:55:43
【问题描述】:

我有一个使用 PHP 和 mySQL 数据库的实时网站。我正在寻找使用 d3 来创建一些可视化。但是我不知道如何更改数据,因为它存储在 SQL 数据库中,然后直接将其编码为 d3 的 JSON。我的PHP:

$activity_array = $array;
   while ($activity = mysqli_fetch_assoc($get_all_activities)) {

   // $user_name = find_user_by_id($activity['user_id']);
   // echo $user_name['last_name'];

   $activity_array[] = $activity;
}
echo json_encode($activity_array);

但是,由于我的 mysql 数据库的设置方式,用户设置为数字,因此我在 JSON 中返回的内容如下所示:

[{"id":"93","date":"2020-05-01","user_id":"37","user_notes":"This user has blah blah."},...]

当我使用此 JSON 在 d3 中生成图表时,我希望它显示实际用户名,而不是“37”。在上面的 PHP 代码中,我注释掉了我必须从他们的 user_id 中获取用户名的查询,但是我不知道如何将它输入到我的 JSON 中。

感谢您的帮助!

【问题讨论】:

  • 您可以将 SQL 查询编辑到 JOIN 您的 users 表,而无需更改此 PHP 代码。

标签: php mysql sql json d3.js


【解决方案1】:

您只需使用第二个查询检索到的用户名修改$activity 数组中的相应条目:

$activity_array = $array;
while ($activity = mysqli_fetch_assoc($get_all_activities)) {

   $user_name = find_user_by_id($activity['user_id']);
   $activity['user_id'] = $user_name['last_name'];

   $activity_array[] = $activity;
}
echo json_encode($activity_array);

但是,将$get_all_activities 查询修改为JOINusers 表并直接在该查询中获取用户名可能会更容易。

【讨论】:

  • 啊,完美。谢谢!
猜你喜欢
  • 2015-07-10
  • 2021-02-06
  • 2013-11-27
  • 2017-05-14
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多