返回一个包含所有结果集行的数组作为对象

时间:2015-10-06 13:14:51

标签: php arrays angularjs object post

我正在尝试使用angular和php从mysql数据库中检索数据。

在角度我正在使用以下代码:

$http({ url: "http://domain.com/script.php",
                method: "POST",
                headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                data: $.param({clubid:$localStorage.choosenClub.ClubID})
            }).success(function(data) {

                console.log(data);

            }).error(function(data) {
                console.log("error:" + data);
            })
            .finally(function () {
                //Do something on finish
        });

在我的PHP脚本中,我正在执行以下操作:

$sql = "SELECT * FROM events WHERE club_id='$club'";
$result = $conn->query($sql);   

if ($result->num_rows > 0) {        
    while($row = $result->fetch_assoc()) {
        echo('[');
        echo json_encode($row);
        echo(']');
    }
} else {
    echo "0 results";
}

当我的mysql数据库中有一行数据时,上面的代码将为我提供一个数组中的对象:

[{"event_id":"123456","club_id":"12345","organizer":"name","date":"2016-04-24","time":"08:00:00","title":"test title"}]

通过上面的结果,我能够使用角度$ http(上面的代码)检索de数据,我可以使用ng-repeat在我的页面上填充它,没有任何问题。

当我在我的mysql数据库中添加更多带有数据的行时,它不再起作用了。 例如,当我在mysql数据库中有两行数据时,结果如下所示:

[{"event_id":"123456","club_id":"12345","organizer":"name","date":"2016-04-24","time":"08:00:00","title":"test title"}][{"event_id":"98765","club_id":"526789","organizer":"name","date":"2016-04-24","time":"08:00:00","title":"test title"}]

我在控制台中收到以下错误:

  

错误:JSON解析错误:无法解析JSON字符串解析@ [native   码]

我认为(纠正我,如果我错了)格式化多行数据有问题。 当我有一行数据时,它是数组中的一个对象,当我有多行数据时,它们不再是数组中的对象。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你不应该尝试自己构建一个json字符串,php可以为你做这个。 :)

首先将所有行添加到数组中,然后json_encode数组。

$sql = "SELECT * FROM events WHERE club_id='$club'";
$result = $conn->query($sql);   

if ($result->num_rows > 0) { 
    $rows = [];       
    while($row = $result->fetch_assoc()) {
        // Add all rows to an array
        $rows[] = $row
    }

    // Json encode the full array
    echo json_encode($rows);
} else {

    echo "0 results";

}

此外,不应回显0 results,而应更好地回显[],因为这可以由json解析器解析为空数组。