【问题标题】:mySql select result return as array in arraymySql 选择结果返回为数组中的数组
【发布时间】:2019-05-22 12:58:17
【问题描述】:

我正在尝试从 mysql 数据库中选择结果作为数组中的数组。

MariaDB 10.3

$fetch = $GLOBALS['mysqli']->query("SELECT id, name, (SELECT JSON_ARRAY(JSON_OBJECT('code',(SELECT code FROM zip WHERE id = zip)),JSON_OBJECT('name',(SELECT name FROM zip WHERE id  = zip)))) AS zip FROM orders WHERE id = '188'");

$rows = array();
$r = mysqli_fetch_assoc($fetch);
$rows['PLZ'] = $r;

print_r($rows);

我得到以下结果

Array ( [PLZ] => Array ( [id] => 188 [name] => Boban [zip] => [{"code": "1140"}, {"name": "Penzing"}] ) ) 

我期望的结果是

Array ( [PLZ] => Array ( [id] => 188 [name] => Boban [zip] =>  Array ( [code] => 1140 [name] Penzing) ) ) 

有人可以帮帮我吗?

已解决

$fetch = $GLOBALS['mysqli']->query("SELECT id, name, (SELECT JSON_OBJECT('code',(SELECT code FROM zip WHERE id = zip),'name',(SELECT name FROM zip WHERE id  = zip))) AS zip FROM orders WHERE id = '188'");

$rows = array();
$r = mysqli_fetch_assoc($fetch);
$rows['PLZ'] = $r;

foreach ($rows as &$row) {
    $row['zip'] = json_decode($row['zip'], true);
}

print_r($rows);

我在 Lajos Veres 的帮助下用选项 a) 解决了,并且 sql 几乎没有变化

【问题讨论】:

    标签: php json mysqli


    【解决方案1】:

    一) 假设您想保留此数组结构,我认为将结果对象从 json 转换为 php 数组的最简单方法可能是:

    foreach($rows as &$row) {
        $row['zip'] = json_decode($row['zip'], true);
    }
    

    b) 否则我只会修改查询以在不同的字段中返回所需的数据:

    SELECT
        id,
        name,
        (SELECT code FROM zip WHERE id = zip) as code,
        (SELECT name FROM zip WHERE id = zip) as zip
    FROM
        orders
    WHERE
        id = '188'
    

    【讨论】:

    • a) 结果:Array ( [PLZ] => Array ( [id] => 188 [name] => Boban [zip] => Array ( [["code", "1140"]] => Array ( [0] => name [1] => Penzing ) ) ) ) b) 结果:Array ( [PLZ] => Array ( [id] => 188 [name] => Boban [code] => 1140 [zip] => Penzing ) ) 我需要这个结果:Array ( [PLZ] => Array ( [id] => 188 [name] => Boban [zip] => Array ( [code] => 1140 [name] Penzing) ) )
    猜你喜欢
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 2020-02-10
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    相关资源
    最近更新 更多