使用PHP从数据库表数据编码JSON

时间:2018-03-13 11:06:53

标签: javascript php json

我希望能够将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"}]
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

这将取代您发布的所有代码。

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