MySql PHP选择JSON值

MySql PHP选择JSON值,php,mysql,arrays,json,Php,Mysql,Arrays,Json,我有这个SQL查询 $sql = "SELECT playerjson FROM `clans` WHERE playercount > ? AND level > ? AND score > ?"; $selectstmt = $con->prepare($sql); $selectstmt->bind_param('iii',$playercountvar,$levelvar,$scorevar); $selectstmt->execute(); //ex

我有这个SQL查询

$sql = "SELECT playerjson FROM `clans` WHERE playercount > ? AND level > ? AND score > ?";
$selectstmt = $con->prepare($sql);
$selectstmt->bind_param('iii',$playercountvar,$levelvar,$scorevar);
$selectstmt->execute(); //execute select statement 
$result = $selectstmt->get_result(); //get select statement results
playerjson
是一个大型JSON数组

[
    {
        "avatar":{
            "userId":253404325847,
            "currentHomeId":253404325847,
            "userName":"enal",
            "role":"Member",
            "level":62,
            "league":8,
            "trophies":1707,
            "donatedTroops":0,
            "receivedTroops":0,
            "clanRank":1,
            "lastClanRank":2,
            "inWar":1
        }
    },
    {
        "avatar":{
            "userId":158925253577,
            "currentHomeId":158925253577,
            "userName":"Valen kamja",
            "role":"Leader",
            "level":54,
            "league":8,
            "trophies":1693,
            "donatedTroops":1054,
            "receivedTroops":2131,
            "clanRank":2,
            "lastClanRank":3,
            "inWar":1
        }
    },
    {
        "avatar":{
            "userId":296357929514,
            "currentHomeId":296357929514,
            "userName":"\u0645\u064c\u0648\u0646\u0633\u062a\u064d\u0631502",
            "role":"Member",
            "level":59,
            "league":7,
            "trophies":1568,
            "donatedTroops":0,
            "receivedTroops":0,
            "clanRank":3,
            "lastClanRank":0,
            "inWar":1
        }
    },
    {
        "avatar":{
            "userId":283468864924,
            "currentHomeId":283468864924,
            "userName":"tolzz",
            "role":"Co-Leader",
            "level":64,
            "league":7,
            "trophies":1312,
            "donatedTroops":34,
            "receivedTroops":456,
            "clanRank":4,
            "lastClanRank":4,
            "inWar":1
        }
    },
    {
        "avatar":{
            "userId":257703167804,
            "currentHomeId":257703167804,
            "userName":"hailery",
            "role":"Co-Leader",
            "level":58,
            "league":6,
            "trophies":1219,
            "donatedTroops":21,
            "receivedTroops":404,
            "clanRank":5,
            "lastClanRank":5,
            "inWar":1
        }
    },
    {
        "avatar":{
            "userId":210456177319,
            "currentHomeId":210456177319,
            "userName":"chey lie",
            "role":"Co-Leader",
            "level":79,
            "league":0,
            "trophies":1101,
            "donatedTroops":0,
            "receivedTroops":0,
            "clanRank":6,
            "lastClanRank":6,
            "inWar":0
        }
    }
]
我要做的就是将
用户ID
当前HomeID
存储在一个数组中,该数组将位于父数组中

因为我需要从中获取子数组,并在url中逐个传递这些参数<代码>爆炸不能用这个,是吗


我将如何实现这一目标?我还需要一种改进SQL语句的方法,这样我就不会像那样检索整个JSON,因为这可能需要更长的时间。

您拥有的是一个JSON编码的Atray。因此,请使用
json\u decode()
对其进行解码

    $arr1 = json_decode($result);

    foreach ($arr1 as $row) {
        echo $row->avatar->userId."-------".$row->avatar->currentHomeId."<br>" ;
    }
$arr1=json\u解码($result);
foreach($arr1作为$row){
echo$row->avatar->userId。“----”$row->avatar->currentHomeId。“
”; }
您拥有的是一个json编码的Atray。因此,请使用
json\u decode()
对其进行解码

    $arr1 = json_decode($result);

    foreach ($arr1 as $row) {
        echo $row->avatar->userId."-------".$row->avatar->currentHomeId."<br>" ;
    }
$arr1=json\u解码($result);
foreach($arr1作为$row){
echo$row->avatar->userId。“----”$row->avatar->currentHomeId。“
”; }
解码结果字符串并将其作为stdclass进行迭代:

$json = json_decode($result);
$parent = array();
foreach($json as $item) {
    $parent[] = array('userId' => $item->avatar->userId, 'currentHomeId' => $item->avatar->currentHomeId);
}

echo '<pre>';
print_r($parent);
echo '</pre>';
等等。要将
$parent
作为URL字符串传递,只需使用
json\u encode
将其字符串化:

var value = window.location.href.split('?values=')[1],
    array = JSON.parse(unescape(value));

console.log(array);
给出
?值=[{“用户”:25340432547,“当前家庭ID”:25340432547},{“用户”:15895253577,

这将自动转义,您可以使用


现在,您可以将数组作为JSON对象客户端。有很多方法可以做到这一点。这只是一个简单的建议。

解码结果字符串并将其作为stdclass进行迭代:

$json = json_decode($result);
$parent = array();
foreach($json as $item) {
    $parent[] = array('userId' => $item->avatar->userId, 'currentHomeId' => $item->avatar->currentHomeId);
}

echo '<pre>';
print_r($parent);
echo '</pre>';
等等。要将
$parent
作为URL字符串传递,只需使用
json\u encode
将其字符串化:

var value = window.location.href.split('?values=')[1],
    array = JSON.parse(unescape(value));

console.log(array);
给出
?值=[{“用户”:25340432547,“当前家庭ID”:25340432547},{“用户”:15895253577,

这将自动转义,您可以使用



现在,您可以将数组作为JSON对象客户端。有很多方法可以做到这一点。这只是一个简单的建议。

我将为您编写一些代码…给我一秒钟:-)我将为您编写一些代码…给我一秒钟:-)我想尝试避免获取整个JSON字符串,因为这可能需要更长的时间。您不需要所有数据吗?我只需要需要json数组中的userId和currentHomeId您需要所有的userId和currentHomeId??是的,我需要所有的,但是json中的其余内容不需要。我想尝试避免获取整个json字符串,因为这可能需要更长的时间。不需要所有数据??我只需要json数组中的userId和currentHomeId您需要ed all user id和all currenthome id??是的,我需要所有这些,但JSON中的其他内容不需要。然后我如何使用它们在URL字符串中传递参数?比方说:我添加了另一个foreach($parent as$id),并计划在其中完成所有操作?@ShivamPaw,不-仅在一行中。你有数组,JSON_encode将其转换“返回”到您可以传递的字符串…@hanshenrik,是的,但在本例中不是nessecary;数组只包含数字和字母,大括号和方括号是完全合法的。然后我如何使用它们通过URL字符串中的参数传递它们呢?比方说:我添加了另一个foreach($parent as$id)计划在那里全部完成吗?@Shivanpaw,不-只有一行。你有数组,json_encode将它“返回”到一个可以传递的字符串…@hanshenrik,是的,但在这种情况下不是nessecary;数组只包含数字和字母,大括号和方括号是完全合法的。