我如何从mysqli结果构建正确的json
How can I build a correct json from mysqli result?
我正试图从我的mysqli结果建立一个json对象。我该怎么做呢?目前,它不会创建一个json外观的对象。
下面是我的代码:$result = $dataConnection->prepare("SELECT id, artist, COUNT(artist) AS cnt FROM {$databasePrefix}users GROUP BY artist ORDER BY cnt DESC LIMIT 0 , 30");
$result->execute();
if($result->error)
{
die("That didn't work. I get this: " . $result->error);
}
$result->bind_result($id, $artist, $count);
$data = array();
while($result->fetch()){
$data[] = '{ id :'.$id.', artist :'.$artist.', count :'.$count.'}';
}
echo json_encode($data);
$dataConnection->close();
我想要一个这样的数据对象:
{"id":"27","artist":"myArtist","count":"29"},....
$result = $dataConnection->query("SELECT id, artist, COUNT(artist) AS count FROM {$databasePrefix}users GROUP BY artist ORDER BY cnt DESC LIMIT 0 , 30");
$data = array();
while($row = $result->fetch_assoc()){
$data[] = $row;
}
echo json_encode($data);
实话告诉你,mysql在应用程序代码中是一个糟糕的API。
帮自己一个忙,至少使用PDO
$result = $dataConnection->prepare("SELECT id, artist, COUNT(artist) AS count FROM {$databasePrefix}users GROUP BY artist ORDER BY cnt DESC LIMIT 0 , 30");
$result->execute();
echo json_encode($result->fetchAll());
不像mysqli,它的方法总是有效的。
不要为将在
上调用json_encode的values数组构建json代替:
$data[] = '{ id :'.$id.', artist :'.$artist.', count :'.$count.'}';
$data[] = array("id"=>$id, "artist"=>$artist, "count"=>$count);
如果你使用mysqli,这里有一个例子。我将它与javascript ajax调用结合使用。
输出如下所示:[{"field1":"23","field2":"abc"},{"field1":"24","field2":"xyz"}]
$mysqli = mysqli_connect('localhost','dbUser','dbPassword','dbName');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s'n", mysqli_connect_error());
exit();
}
$query = "SELECT field FROM table LIMIT 10";
if ($result = mysqli_query($mysqli, $query)) {
$out = array();
while ($row = $result->fetch_assoc()) {
$out[] = $row;
}
/* encode array as json and output it for the ajax script*/
echo json_encode($out);
/* free result set */
mysqli_free_result($result);
/* close connection*/
$mysqli->close();
}
/* close connection*/
$mysqli->close();
创建一个包含所有行的数组,然后执行:
echo json_encode($array)
相关文章:
- Ext.js从json构建模型关系的问题
- 通过推送json构建一个数组对象
- 使用JavaScript和JSON构建内联SVG图
- 如何为此 Firebase Response JSON 构建打字稿界面
- 使用 angularjs 从 JSON 构建地图
- 使用 bluebird 从 JSON 构建承诺
- 如何在 jquery 成功方法中接收 JSON 并使用该 JSON 构建 HTML 内容
- 在python服务器上从Fabric.js JSON构建图像
- 从 JSON 构建动态表
- JSON,jQuery,$.getJSON:JSON构建混乱
- Javascript有效地从JSON构建表并将其添加到DOM
- Node.js循环和JSON构建
- 从JSON构建大量数据
- 验证使用json构建的选择菜单
- Javascript - JSON:构建一个层次树
- 用json构建一个下拉菜单
- 从现有 JSON 构建新的 JSON
- 从json构建promise流
- 如何从javascript中的对话框json构建CQ.Dialog
- 用jQuery从未知深度的嵌套JSON构建级联下拉列表