我有一个像这样的数组
id | userID | item
1 ! 1 | {"property": 0, "property": "string"}
2 ! 1 | {"property": 4, "property": "string2"}
我希望像这样返回一个数组:
[{
"property": 0,
"property": "string"
},
{
"property": 4,
"property": "string2"
}]
无论我尝试什么,我似乎无法让它正常工作。要么我得到一个完整的字符串,所以数字值被转换,或者我得到一个带有“到处”的对象。目前我有这个代码
if ($query = $mysqli->query("SELECT item FROM userItems WHERE userID = 'id' "))
{
while ($row = $query->fetch_object())
{
$result->items[count($result)] = $row;
}
}
$test = stripslashes(json_encode($result->items));
返回此...
{"1":{"item":"{"property":"0","property":"string"}"}}
试图解决它几个小时但无法正确
答案 0 :(得分:1)
我尝试了你的代码,主要有两个方面:
您正在构建一个关联数组数组,但关联数组往往会在代码中用后者覆盖相同的关联键 - 在您的情况下,两个键都是property
,
您从DB(userItems.item)检索的数据似乎已经过JSON编码,因此您需要在某处调用json_decode()
,而不是再次调用json_encode()
;解码您的$row->item
($result->items[count($result)] = json_decode($row->item);
)似乎可以解决问题。
作为旁注,您应该考虑将SQL查询中的id
参数包装到mysqli_real_escape_string()
左右。
如果有帮助,请告诉我,您现在可以看到所需的结果。