0

我试图简单地回显一个 JSON 对象文字,其中包括我的数据库表中的每一行。

作为在我查看的许多其他类似问题中找到的方法的标准,我正在获取每一行并对其进行编码,如下所示:

$con=mysqli_connect("localhost","username","pass","markers");//markers is db table name
$result = mysqli_query($con,"SELECT * FROM markers");

$rows = array();

while($r = mysqli_fetch_array($result))
  {
       $rows[] = $r
       //or: $rows[] = array('data' => $r);
  }

echo json_encode($rows);

类似于问题PHP: can't encode json with multiple rows or mysql table to json

我想回显一个如下所示的 JSON 对象:

    {
    "data1":   // how do I get "data1"?
        {
            name: John Smith,
            title: Mr,
            description: a man
        }
    }

    {
    "data2":{ // how do I get "data2"? 
            name:Bob Smith,
            title: Mr,
            description: another guy
        }

    }

除了我不知道如何实现“标题”,第一级对象字符串的标题,例如“data1”或data2“。事实上,我的数据库表甚至不一定有那些值/那一列。

这就是它现在的样子: 数据库表

如何获得简单的数字“标题”,如“1”、“2”或“data1”、“data2”,而不必将“名称”列指定为“标题”? (或者我必须为此设置一个专栏吗?)

我的目标是处理返回的 JSON 中每个“行”中的值。

我计划使用 jQ $.each 函数$.each(data, function(dataNum, dataInfo)——例如,data1 将被传递给 dataNum,而值将被传递给 dataInfo——并且能够通过 访问特定的表值dataInfo.name,但现在这不起作用。

提前感谢任何帮助!

4

2 回答 2

2

我认为你最好使用mysqli_fetch_object()将每一行作为它自己的对象。当你然后 json_encode$rows你会有一个对象数组。

这是代码:

$con=mysqli_connect("localhost","username","pass","markers");//markers is db table name
$result = mysqli_query($con,"SELECT * FROM markers");

$rows = array();

while($r = mysqli_fetch_object($result))
  {
       $rows[] = $r;
  }

echo json_encode($rows);

你的 JSON 看起来像这样:

[
    {
        "name":"Some Name",
        "title":"Some Title",
        "description":"Some description"
    },
    {
        "name":"Some Other Name",
        "title":"Some Other Title",
        "description":"Some other description"
    },
    ...
]

在 javascript 中,这为您提供了一个整数索引的对象数组。所以你的 javascript 可能看起来像这样:

var array = JSON.parse(jsonString);
$.each(array, function(key, value) {
    alert(key); // numerical index
    alert(value.name); // name
    alert(value.title); // title
    alert(value.description); // description
});
于 2013-03-26T00:12:22.670 回答
0

在 $rows 变量中创建索引:

<?php

$t['a'] = array ('name' => 'foo');
$t['b'] = array ('name' => 'bar');

echo json_encode ($t);
?>

在您的情况下,一个简单的整数应该可以解决问题,或者类似于$rows['data' . $i]后跟 $i++ 的东西。

于 2013-03-26T00:08:17.867 回答