我正在尝试从远程mysql数据库获取数据并将其导入json 连接没问题,问题是最终从json回显的结果不正常,这是我的php代码
<?php
require("config.inc.php");
$query = "Select * FROM comments";
$res = mysql_query($query);
$rows = mysql_fetch_assoc($res);
if ($rows) {
$response["success"] = 1;
$response["message"] = "Post Available!";
$response["posts"] = array();
foreach ($rows as $row) {
$post = array();
$post["username"] = $row["username"];
$post["title"] = $row["title"];
$post["message"] = $row["message"];
//update our repsonse JSON data
array_push($response["posts"], $post);
}
// echoing JSON response
echo json_encode($response);
这是回显到页面的结果:
{"success":1,"message":"Post Available!","posts":[{"username":"1","title":"1","message":"1"},{"username":"r","title":"r","message":"r"},{"username":"t","title":"t","message":"t"},{"username":"t","title":"t","message":"t"}]}
而我的数据库表“comments”包含这些数据:
post_id username title message
1 reda test title 2 test message xxx
2 reda2 title 2 message 2
请帮忙 感谢。
答案 0 :(得分:1)
您只使用
返回1行/数组$rows = mysql_fetch_assoc($res);
所以当你这样做时
foreach ($rows as $row) {
您正试图从单个阵列获得多维数组循环。这就是为什么每个posts
值是1个返回的行/数组中每列的第一个字符。
您需要构建$rows
数组。尝试更改
$rows = mysql_fetch_assoc($res);
到
$rows = array();
while($result = mysql_fetch_assoc($res)){
$rows[] = $result;
}
答案 1 :(得分:1)
您没有正确地从MySQL读取结果集。您只获取第一行并将其视为整个结果集。您需要循环,依次检索每一行。
试试这个:
$query = "Select * FROM comments";
$res = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($res)!= 0) {
$response = array();
$response["success"] = 1;
$response["message"] = "Post Available!";
$response["posts"] = array();
while ($row = mysql_fetch_assoc($res)) {
$post = array();
$post["username"] = $row["username"];
$post["title"] = $row["title"];
$post["message"] = $row["message"];
//update our repsonse JSON data
array_push($response["posts"], $post);
}
}
// echoing JSON response
echo json_encode($response);
注意:我没有测试过这段代码。
第二个注意 - 您不应该将mysql_*()
用于新代码 - 它已被弃用。 Swicth为mysqli_*()
或PDO
。