将mysql查询结果导入json

时间:2014-07-23 22:25:34

标签: php mysql json

我正在尝试从远程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

请帮忙 感谢。

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