【问题标题】:Encoding JSON with PHP from database table data使用 PHP 从数据库表数据中编码 JSON
【发布时间】:2018-08-21 14:47:27
【问题描述】:

我希望能够将 JSON 编码为特定格式,以便可以与我创建的另一个脚本一起使用。我可以使用 PHP 将其编码为 JSON,但需要能够将这些编码的 JSON 集推送到“命名”数组。

目前我得到了这个

{
    "ann_date":"14\/12\/2017",
    "ann_title":"Return Dates",
    "ann_content":"Have a good break. The course timetable resumes on Wednesday 3rd January 2018",
    "tutor":"John Smith"
}

从此代码

class AnnData {
    public $ann_date = "";
    public $ann_title = "";
    public $ann_content = "";
    public $tutor = "";
}

while($row = mysqli_fetch_array($result)) {
    $ann_date = $row['ann_date'];
    $ann_title = $row['ann_title'];
    $ann_content = $row['ann_content'];
    $tutor = $row['tutor'];

    $annData = new AnnData();
    $annData->ann_date =  $ann_date;
    $annData->ann_title  = $ann_title;
    $annData->ann_content  = $ann_content;
    $annData->tutor  = $tutor;

    $annQ = json_encode($annData);

但需要它看起来像这样

{
"announcements":[{
    "ann_date":"14\/12\/2017",
    "ann_title":"Return Dates",
    "ann_content":"Have a good break. The course timetable resumes on Wednesday 3rd January 2018",
   "tutor":"John Smith"}]
}

【问题讨论】:

  • 这个帖子会帮助你:stackoverflow.com/questions/35099682/php-array-to-json-object希望这会有所帮助!
  • $result['announcements'][] = $annData...您只需要构建您想要的实际数据结构...
  • 试试$result = array(); $result['announcements'] = $annData; $annQ = json_encode($result);,是不是你想要的结果?

标签: javascript php json


【解决方案1】:

您可以声明一个关联数组,然后对其进行编码:

$annData = new AnnData();
...
$out = array('announcements' => array($annData));
$outJson = json_encode($out);

【讨论】:

  • 使用此代码,我需要能够将更多 JSON 对象添加到数组中,目前它正在为每个 JSON 对象创建一个数组。抱歉有点 PHP 新手。
  • $announcements = array(); for (...) { array_push($announcements, $object); } $outJson = json_encode(array('announcements' => $announcements));
【解决方案2】:

您可以通过从数据库中获取正确的列(只有您需要的 4 个)并一次获取所有行来大大简化此操作:

$annQ = json_encode([
    'announcements' => mysqli_fetch_all($result, MYSQLI_ASSOC),
]);

这将替换您发布的所有代码。

关联数组将作为对象存储在字符串中,因此如果您不打算在其他任何地方使用它,也不需要该类。

【讨论】:

  • 如果 db 模式在所述表中没有其他字段,则为 true。
  • @YvesLeBorg 这就是为什么我提到 OP 需要从数据库中获取正确的列 :-)
  • duh ... 对噪音感到抱歉 ;)
  • 我回来了 fetch_all 是未定义的,怀疑是因为 PHP 版本,还有其他方法吗?
  • @saunders07 这听起来不太可能,它适用于 php 5.3+。你是哪个版本的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多