繁体   English   中英

如何以JSON格式合并MySQL查询结果

[英]How to merge MySQL query result with JSON format

嗨,我正在尝试将MySQL结果的输出以JSON格式合并,但我感到困惑,我该怎么做,所以我需要您的帮助,请告诉我如何进行此工作,谢谢。

SQL:

$result = $db->sql_query("SELECT a.*,i.member_id,i.members_seo_name
    FROM ".TBL_IPB_USER." i 
    LEFT JOIN ".TBL_IPB_LA." a 
    ON a.member_id=i.member_id 
    WHERE i.".$column." = '".$val."' AND a.game = '".$game."'");

    while( $dbarray = $db->sql_fetchrow($result) ){
        $arr[] = $dbarray;
    }

    return ($arr);

我的查询的正常结果和JSON格式的输出为:

{
    "status": 200,
    "result": [
        {
            "member_id": "1",
            "member_name": "maxdom",
            "ip_address": "177.68.246.162",
            "session_onlineplay": "1",
            "sid": "IR63374a32d1424b9288c5f2a5ce161d",
            "xuid": "0110000100000001",
            "serialnumber": "9923806a06b7f700a6ef607099cb71c6",
            "game": "PlusMW3",
            "members_seo_name": "maxdom"
        },
        {
            "member_id": "1",
            "member_name": "maxdom",
            "ip_address": "81.254.186.210",
            "session_onlineplay": "1",
            "sid": "IR3cd62da2f143e7b5c8f652d32ed314",
            "xuid": "0110000100000001",
            "serialnumber": "978e2b2668ec26e77c40c760f89c7b31",
            "game": "PlusMW3",
            "members_seo_name": "maxdom"
        }
    ],
    "handle": "checkUSER"
}

但是我想像这样合并输出和结果:

{
    "status": 200,
    "result": [
        {
            "member_id": "1",
            "member_name": "maxdom",
            "ip_address": [
                "177.68.246.162", 
                "81.254.186.210"
            ],
            "session_onlineplay": "1",
            "sid": [
                "IR63374a32d1424b9288c5f2a5ce161d",
                "IR3cd62da2f143e7b5c8f652d32ed314"
            ],
            "xuid": "0110000100000001",
            "serialnumber": [
                "9923806a06b7f700a6ef607099cb71c6",
                "978e2b2668ec26e77c40c760f89c7b31"
            ],
            "game": "PlusMW3",
            "members_seo_name": "maxdom"
        }
    ],
    "handle": "checkUSER"
}

您最好将php用于解析器,防止数据库的高负载,这是示例代码

 $result = $db->sql_query("SELECT a.*,i.member_id,i.members_seo_name FROM ".TBL_IPB_USER." i LEFT JOIN ".TBL_IPB_LA." a ON a.member_id=i.member_id WHERE i.".$column." = '".$val."' AND a.game = '".$game."'"); $arr = array(); while( $dbarray = $db->sql_fetchrow($result) ){ $item = $dbarray; $item['ip_address'] = array($item['ip_address']); $item['sid'] = array($item['sid']); $item['serialnumber'] = array($item['serialnumber']); $index = $dbarray['member_id']; if(isset($arr[$index])) { $arr[$index]['ip_address'] = array_merge($arr[$index]['ip_address'], $item['ip_address']; $arr[$index]['sid'] = array_merge($arr[$index]['sid'], $item['sid']; $arr[$index]['serialnumber'] = array_merge($arr[$index]['serialnumber'], $item['serialnumber']); } else { $arr[$index] = $item; } } return array_values($arr); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM