JSON响应格式正确

时间:2015-02-18 23:27:38

标签: php mysql json

我正在通过PHP查询数据库中名为“users”的表。

$result = mysql_query("SELECT name, lastname FROM $tableName");         

    if (mysql_num_rows($result) > 0) 
    {
        while($row = mysql_fetch_row($result)) {
            echo json_encode( $row );
        }
    }
    else 
    { 
        echo json_encode( "No rows found!" );
    }

我把这个表放回JSON响应中,如下所示..

["John","Smith"]["John","Wayne"]

但是我想要的格式如下。

{ "users" : [
  {
    "name":"John",
    "lastname":"Smith",
  },
  {
    "name":"John",
    "lastname":"Wayne",
  }
]}

有没有办法查询数据并将其与表名一起返回,如上面的格式?

2 个答案:

答案 0 :(得分:1)

如果你这样做会怎么样?将行放入数组并对其进行编码。

$result = mysql_query("SELECT name, lastname FROM $tableName");         

    if (mysql_num_rows($result) > 0) 
    {
        $users = array();
        while($row = mysql_fetch_row($result)) {
            $users['users'][] = $row;
        }
        echo json_encode( $users );

    }
    else 
    { 
        echo json_encode( "No rows found!" );
    }

答案 1 :(得分:1)

使用它代替您当前的代码:

<?php
$userInfo = array("users" => array());
$result = mysql_query("SELECT name, lastname FROM $tableName");
if (mysql_num_rows($result) > 0) 
{
    while($row = mysql_fetch_row($result)) {
        $userInfo["users"][] = array("name" => $row[0], "lastname" => $row[1]);
    }
    echo json_encode($userInfo);
}
else 
{ 
    echo json_encode( "No rows found!" );
}

修改

我刚看到你希望这是一个使用表名和列名的动态结果获取,如果你希望这样做,你应该使用mysqli_fetch_assoc()而不是mysqli_fetch_row()之类的这样:

<?php
$result = mysqli_query($con, "SELECT name, lastname FROM $tableName");
$tableData = array($tableName => array());

if (mysqli_num_rows($result) > 0) 
{
    while($row = mysqli_fetch_assoc($result)) {
        $tableData[$tableName][] = $row;
    }
    echo json_encode($tableData);
}
else 
{ 
    echo json_encode( "No rows found!" );
}