php - 如何使用 php 为 sql 服务器设置 2d Json 数组?

标签 php android mysql json

我有以下 php 代码,但它只存储查询返回的最后一行数据。如何将所有数据存储在 json 数组中,以便我可以通过 android 访问它并填充 ListView ?

<?php

header('Content-Type: application/json ');
    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = 'pass';

   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT * FROM tb_name';
   mysql_select_db('db_name');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($rows=mysql_fetch_assoc($retval)){
        $json['colA'] = $rows['colA'];
        $json['colB'] = $rows['colB'];
}
   echo json_encode($json);
   mysql_close($conn);
?>

以下代码仅生成以下 json 数组,其中数据是最后一行:

{
  "colA": "contents of A",
  "colB": "contents of B"
}

如何存储它返回的所有行,但以某种方式使键分开,如下所示:

{
    {
      "colA": "contents of A",
      "colB": "contents of B"
    },
    {
      "colA": "contents of A",
      "colB": "contents of B"
    },
    {
      "colA": "contents of A",
      "colB": "contents of B"
    }
}

我知道语法可能不适合 json 文件,但本质上这就是我想要完成的,我错过了什么?

最佳答案

您在 while 循环中覆盖数据。你可以这样做:

while($rows=mysql_fetch_assoc($retval)){    
    $row['colA'] = $rows['colA'];
    $row['colB'] = $rows['colB'];
    $json[] = $row;
}

关于php - 如何使用 php 为 sql 服务器设置 2d Json 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37670121/

相关文章:

java - 如果 PayPal 的 IPN 服务无法连接到 IPN 目的地会怎样?

php - json 的 symfony 3 规范器 - 格式化所有时间戳

android - 包在设置中的 uid : 10124 on disk, 10134 不匹配

mysql - 将 mysql 子查询转换为 Left Join

php - 使用 "WHERE field < NUM"在 MySQL 中加入表

php - 表未添加到数据库

PHP DOMDocument - 如何添加命名空间声明?

android - 在webview中拦截下载并使用HttpClient下载

android - 任务 ':android:lint'的执行失败无法初始化类com.sun.imageio.plugins.jpeg.JPEGImageReader

MySql:自动填充