2015-09-18 58 views
0

创建一个从行对象数组我有像这样在同一个表:: PHP + SQL

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"}"}} 

一直在努力解决好几个小时,不能得到它的权利

回答

1

我想你的代码,这里有两种主要的事情:

  1. 你建立关联数组的数组,但关联数组倾向于覆盖在你的代码的情况相同,关联键 - 在你的情况下,两个键是property

  2. 你从数据库中检索(userItems数据。项目)已经似乎是JSON编码,因此您需要拨打json_decode()而不是再拨打json_encode();解码你的$row->item$result->items[count($result)] = json_decode($row->item);)似乎有伎俩。

正如阿里纳斯,你应该考虑在包装SQL查询您的id参数为mysqli_real_escape_string()左右。

让我知道是否有帮助,你现在看到了预期的结果。

+0

谢谢!我明天会试试,今天太累了哈哈。我使用$ mysqli-> real_escape_string(),但是我省略了占用较少的空间 – lmenus