首页 > 解决方案 > 从 php/json 转换时,JavaScript 中只出现一个结果

问题描述

我有一个 php 查询,并已使用 json_encode 设置为 json。我已经使用 echo 打印了结果,执行此操作时,查询的每个结果都以 json 格式显示。

然后我想转换信息,以便我可以在 JavaScript 中使用它。我只是简单地回显了结果,但查询中只有一个结果似乎被忽略了。

这是我的php代码

$sql = mysqli_query($con,"SELECT appointment_time, appointment_date FROM Appointments");

if (!$sql) {
    die('Invalid query: ' . mysqli_error());
}

$appointments = array();

while ($row = mysqli_fetch_assoc($sql)) {
    $appointment[] = $appointments;

    foreach ($appointment as $appointments) {

        $appointments = array('title' => 'Unavailable', 'start' => $row['appointment_date']. 'T' .$row['appointment_time'].'+08:00');

    }

    $json = json_encode($appointments);

    echo $json;

}

这是我的 JavaScript

events:[
             <?php echo $json;?> //'2018-12-12T15:00+08:00'
        //}, 
        //{
            //title: '',
            //start: '' //'2018-12-12T12:00+08.00'
        ]

标签: javascriptphparraysjson

解决方案


你有两个循环。while 循环:它可以访问结果的每一行,并且每次都使用变量 $row 遍历它们。您正在将此 $row 添加到您的约会数组中。

然后你有你的 $appointments 上的 foreach 循环(这是递增的,因为 $row 每次都通过较早的 while 循环添加)。在这个 foreach 循环中,您将每个约会分配到同一个变量 $row (由您的外部 while 循环使用)。

所以存在变量命名冲突。如果您打算打印查询结果,可以执行以下操作。

while ($row = mysqli_fetch_assoc($sql)) {

    echo json_encode(array(
        'title' => 'Unavailable', 
        'start' => $row['appointment_date']. 'T' .$row['appointment_time'].'+08:00'
    ));

}

如果您打算获得 json 结果。

$json = json_encode(mysqli_fetch_all($sql,MYSQLI_ASSOC));

推荐阅读