我从客户端收到以下JSON响应:
{
"name": "Joel",
"cities_visited": [{
"city1": "Chicago",
"city2": "Seattle"
}],
"active": true
}
我正在使用json_decode
来获取结果,但是在将cities_visited作为一组数据插入mysql时遇到了问题。我也试过json_decode($json, true)
而没有运气。
任何人都可以给我一些见解,如何准确地准备这些数据,以便我可以插入我的数据库吗?
我需要以某种方式将这个cities_visited数组放到mysql上的一个入口行中,然后能够将它取出并以json_encode的形式返回
答案 0 :(得分:2)
如果cities_visited
只有一列,并且需要将多个值放入其中,那么它们需要以某种方式序列化。既然你正在处理JSON,你也可以把它转回json把它发送到数据库。
$user = json_decode($input);
$user->cities_visited = json_encode($user->cities_visited);
这样的事情。这不是最好的解决方案,你真正想做的是在用户和城市之间建立多人关系
因此,在上面的示例数据中,您将在用户表中为Joel创建一行,在City表中为芝加哥和西雅图创建两行,在Visits表中将两行链接在一起。
这种方法的优点是现在分析数据要容易得多。假设您想了解最多访问过哪个城市?简单地
select count(*) AS number_visits, name as city_name
from Visits v
join Cities c on v.city_id = c.id
group by v.city_id
order by visits
limit 1
如果cities_visited
字段在数据库中序列化,则必须使用PHP循环遍历每个用户并自行计算结果。
答案 1 :(得分:1)
由于您正在处理数组,因此可以在将结果存储到数据库之前尝试序列化结果。然后在检索它时将其反序列化。