php - Json编码整个mysql结果集

标签 php mysql json resultset

我想像下面这样用php编码函数获取json

<?php 
  require "../classes/database.php";

  $database = new database();
  header("content-type: application/json");
  $result = $database->get_by_name($_POST['q']);   //$_POST['searchValue']

  echo '{"results":[';
  if($result)
  {
     $i = 1;
     while($row = mysql_fetch_array($result))
     {
        if(count($row) > 1) 
        {
           echo json_encode(array('id'=>$i, 'name' => $row['name']));
           echo ",";
        }
        else 
        {
           echo json_encode(array('id'=>$i, 'name' => $row['name']));
        }
        $i++; 
     }
  }
  else
  {
     $value = "FALSE";
     echo json_encode(array('id'=>1, 'name' => ""));  // output the json code
  }

  echo "]}";

我希望输出的 json 是这样的

{"results":[{"id":1,"name":"name1"},{"id":2,"name":"name2"}]}

但是输出的json是这样的

{"results":[{"id":1,"name":"name1"},{"id":2,"name":"name2"},]}

当你意识到最后有逗号时,我想删除它以便它可以是正确的 json 语法,如果我删除了 echo ","; 当有多个结果时json 将像这样生成 {"results":[{"id":1,"name":"name1"}{"id":2,"name":"name2"}]}而且那个语法也是错误的

希望大家明白我的意思,任何想法将不胜感激

最佳答案

如果我是你,我不会json_encode 每个单独的数组,而是将数组合并在一起,然后在最后json_encode 合并的数组。以下是使用 5.4's 的示例短数组语法:

$out = [];
while(...) {
  $out[] = [ 'id' => $i, 'name' => $row['name'] ];
}
echo json_encode($out);

关于php - Json编码整个mysql结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7531965/

相关文章:

php - 如何防止 Bootstrap 轮播图像堆叠? HTML/CSS(使用PHP显示图片)

mysql - 如何在mysql中添加一些 "time"变量

php - 变量不存在时隐藏内容

mysql - 在 Pentaho Aggregation Designer 中创建的聚合表不存在于查询的 from 子句中

javascript - backbone.js 和处理来自 rails 的错误消息?

php - ColdFusion 和 PHP 之间有效/无效的电子邮件格式策略差异

php - 用正则表达式匹配所有三种 PHP 注释

php - PHP 中 SoapServer 的默认 Soap 版本是什么?

java - Jackson json 序列化对于整数键失败

javascript - 为什么我无法获取 Google fusion 表中的行数?