【问题标题】:PHP multi dimensional array SQL request to JSONPHP多维数组SQL请求到JSON
【发布时间】:2018-11-06 04:55:03
【问题描述】:

好的,这很像我的上一个问题 (PHP convert a SQL request into JSON),但即使看起来很简单,我也找不到解决方案。

我有一个非常简单的 SQL 表:

$sql="CREATE TABLE 
      example (ID INT AUTO_INCREMENT PRIMARY KEY, 
              name VARCHAR(50), 
              status VARCHAR(50),
              value VARCHAR(50));";

具有以下值:

1 | name1 | open  | value1
2 | name2 | open  | value2
3 | name3 | close | value3

我调用想要的数据:

$sql= "SELECT * FROM example where status='open'";
$result= mysqli_query($link,$sql);
$arrayofdata = mysqli_fetch_array($result);

由于 $arrayofdata 里面可能有 1 个或多个数组,我试试这个:

$JSONED = json_encode($arrayofdata);

但是输出值很奇怪,而且,我不明白为什么,它不包含 [] 括号(据我了解 JSON 格式,[] 应该是 JSON 字符串的第一个和最后一个元素)

我想要一个这样的 JSON 对象:

[{1,"name1","open","value1"},{2,"name2","open","value2"}]

可以直接做吗?还是代码必须和$arrayofdata交互一步步创建一个新数组?

【问题讨论】:

  • 你不懂json格式。见json.org
  • 您想要的 json 唯一不同的是,内部数组不会有大括号,而是方括号(因为这些数组中没有键名)。您看到的问题是由于 mysqli_fetch_array 实际返回的内容......默认情况下包括键名(MYSQLI_BOTH)......并且也只返回第一行(您必须像 zhilevans 示例中那样循环它)。

标签: php sql json


【解决方案1】:

您可以使用以下代码获得您想要的结果:

$sql= "SELECT * FROM example where status='open'";
$result= mysqli_query($link,$sql);
$data = array();
while ($row = mysql_fetch_assoc($result)) {

    //... maybe some processing of $row here ...

    $data[] = $row;
}

echo json_encode($data);

【讨论】:

  • @PedroJoseOteroRodriguez 不客气,很高兴听到,它适合你。
猜你喜欢
  • 2019-01-14
  • 2017-03-27
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 2011-01-08
  • 2012-10-07
相关资源
最近更新 更多