从mysql表中获取数据并将值放在JSONObject中

时间:2014-01-04 05:08:25

标签: php json

我从mysql表中获取值。然后我将值放在数组中并使用php内置函数json_enconde将这些值转换为json格式。我收到的结果却没有达到预期的格式。在PHP代码中,您将注意到我正在使用数组并使用foreach循环获取值以将所有值放入其中。结果我得到了几个json对象。如何只返回一个具有相应值的json对象?

header("Content-type: application/json");   
$query = $db_con->prepare("SELECT id, name FROM table");
$query->execute();
$data = $course_query->fetchAll();
$json_data = array();
foreach ($data as $row) {
    $json_data[] = array(
       $row["id"] => $row["name"]
    );
}  // foreach ($data as $row) {
echo json_encode($json_data);

结果:

{
1: "Item1"
},
{
2: "Item2"
},
{
3: "Item3"
}

期望的结果:

{
"1":"Item1",
"2":"Item2",
"3":"Item3"
}

3 个答案:

答案 0 :(得分:1)

试试这个

foreach ($data as $row) {
$id=$row["id"];
    $json_data[$id] =$row["name"];

}  

问题在于,在foreach循环中定义json_data中的值时,您将为每个值创建一个数组,因此您无法获得所需的结果。

答案 1 :(得分:1)

更改此array( $row["id"] => $row["name"]);
至for $json_data[$row["id"] ] = $row["name"]在for循环中

foreach ($data as $row) {
    $json_data[$row["id"] ] = $row["name"];
}  

答案 2 :(得分:1)

您需要更改PHP代码以创建普通的单维数组,现在您正在创建一个多维数组。你的PHP应该是这样的:

header("Content-type: application/json");   
$query = $db_con->prepare("SELECT id, name FROM table");
$query->execute();
$data = $course_query->fetchAll();
$json_data = array();
foreach ($data as $row) {
    $json_data[$row["id"]] = $row["name"];
}  // foreach ($data as $row) {
echo json_encode($json_data);

注意foreach循环中的更改,我们不再将新数组附加到$json_data数组(这将创建一个多维数组)。这将为您提供具有正确键:值对的单维数组。然后,当您运行json_encode时,您将获得所需的JSON格式。