我正在尝试使用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 码]
我认为(纠正我,如果我错了)格式化多行数据有问题。 当我有一行数据时,它是数组中的一个对象,当我有多行数据时,它们不再是数组中的对象。
我做错了什么?
答案 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解析器解析为空数组。