为了账号安全,请及时绑定邮箱和手机立即绑定

将 Mysql 数据库转换为 Json

将 Mysql 数据库转换为 Json

PHP
一只名叫tom的猫 2021-12-03 15:26:33
我有一个mysql数据库,我想把它改成json格式,结果如下图["aaa","bbb","ccc"]但是当我使用 PHP 编写代码时,如下所示<?phprequire_once("../con.php");$list = mysqli_query($con,"SELECT * FROM user WHERE reff='admin'");$r = array();while($data = mysqli_fetch_array($list)) {    $r[] = array($data['username']);}echo json_encode($r, JSON_PRETTY_PRINT);?>结果和我想要的不一样,下面的结果[ [ "aaa" ], [ "bbb" ], [ "ccc" ] ]有什么建议可以解决吗?
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

最好的方法是 $r[] = $data['username'];而不是$r[] = array($data['username']);因为使用这一行,$r[] = array($data['username']);您每次都试图将用户名作为数组而不是用户名字符串值推送$r,这就是为什么它会[]在您的用户名值周围创建额外的括号。

但是,如果您不想更改现有代码,那么您可以使用此额外代码行($r = array_merge(...$r)此处... 称为 splat 运算符)来按预期获得结果


查看完整回答
反对 回复 2021-12-03
?
湖上湖

TA贡献2003条经验 获得超2个赞

1.


替换 $r[] = array($data['username']);


到 $r[] = $data['username'];


2.


"SELECT username FROM user WHERE reff='admin'" // * -> username 

// in while

$r[] = $data[0];

or

$r[] = current($data);

3.sql中的格式


SELECT CONCAT('[',GROUP_CONCAT('"',username,'"'),']') FROM user WHERE reff='admin'

看。https://dba.stackexchange.com/questions/192208/mysql-return-json-from-a-standard-sql-query


如果你的mysql v5.7.22+

在sql中使用函数JSON_ARRAY、JSON_OBJECT、JSON_QUOTE https://dev.mysql.com/doc/refman/5.7/en/json-creation-functions.html


查看完整回答
反对 回复 2021-12-03
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

您正在将一个数组分配给另一个数组。请参阅此附加更改:


<?php

require_once("../con.php");


$list = mysqli_query($con,"SELECT * FROM user WHERE reff='admin'");

$r = [];

while($data = mysqli_fetch_array($list)) {

    $r[] = $data['username'];

}

echo json_encode($r, JSON_PRETTY_PRINT);

?>


查看完整回答
反对 回复 2021-12-03
  • 3 回答
  • 0 关注
  • 443 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信