如何将此json数组保存到MYSQL数据库

Posted

技术标签:

【中文标题】如何将此json数组保存到MYSQL数据库【英文标题】:How to save this json array to MYSQL database 【发布时间】:2014-02-28 05:11:58 【问题描述】:

我想将我的 fb-login 返回的这个 json 数组保存到数据库中。但是我真的不知道如何使用 php 将其转换为字符串。

["id":"108124505876479","name":"Wakeboarding","id":"112003352149145","name":"Bouldering","id":"110008522357035","name":"Handball"]

我已经在下面尝试过这段代码,但我什至不太确定 fb 登录返回的内容是否是 json 数组。

$json = '"id":"108124505876479","name":"Wakeboarding","id":"112003352149145","name":"Bouldering","id":"110008522357035","name":"Handball"';

var_dump(json_decode($json));

如何将不同的运动以字符串形式保存到我的数据库中?

任何帮助将不胜感激。

谢谢。

编辑:上半部分返回NULL。


第二次编辑:

if (array_key_exists('sports', $me))


                    $json = '$me['sports']'; PROBLEM IS HERE
                    $data = json_decode($json, true);
                    $sports = array();
                    foreach ($data as $item) 
                        $sports[] = $item['name'];
                    

                    $user->fb_sports = $sports;
                

【问题讨论】:

到底是什么问题? json_encode 或 serialize 应该可以正常工作。 $json 外面应该有方括号 - 使用 jsoneditoronline.org 检查它是否是有效的 JSON。 并祈祷,希望您永远不必通过保存为字符串的结构化数据进行查询。因为谁需要范式? 我已经编辑了问题。 $me 等于什么?还有 $json = '$me['sports']';不是有效的代码。 【参考方案1】:

如果 var_dump(json_decode($json)) 返回您期望的结果,只需将 $json 直接保存到数据库中即可。

【讨论】:

我想保存所有运动的字符串。 周围应该有方括号...尝试将其复制到jsoneditoronline.org 也使用 var_dump(json_decode($json, true)) 将其转换为关联数组。【参考方案2】:

使用:

 $json = serialize($json);

【讨论】:

现在返回的是:s:134:""id":"108124505876479","name":"Wakeboarding","id":"112003352149145","name" :"抱石","id":"110008522357035","name":"手球"";有没有办法只保存运动? $json = '["id":"108124505876479","name":"Wakeboarding", "id":"112003352149145","name":"Bouldering", "id":"110008522357035","name":"手球"]'; $json = json_decode($json,true); foreach($json as $value) $sports[] = $value["name"]; $sports = 序列化($sports); 我已经编辑了这个问题。我收到的错误是我从 Facebook 收到的是一个数组,而不是一个字符串。 包含登录用户数据的 Facebook 数组。【参考方案3】:
$json1 = '"id":"108124505876479","name":"Wakeboarding","id":"112003352149145","name":"Bouldering","id":"110008522357035","name":"Handball"';
$json2 = '["id":"108124505876479","name":"Wakeboarding","id":"112003352149145","name":"Bouldering","id":"110008522357035","name":"Handball"]';

var_dump(json_decode($json1,true));
var_dump(json_decode($json2,true));

注意区别

【讨论】:

【参考方案4】:
$json = '["id":"108124505876479","name":"Wakeboarding","id":"112003352149145","name":"Bouldering","id":"110008522357035","name":"Handball"]';
$data = json_decode($json, true);
$sports = array();
foreach ($data as $item) 
    $sports[] = $item['name'];

如果你想用逗号分隔它们:

$output = implode(', ', $sports);

【讨论】:

这很好用。但是,我收到的错误是我从 Facebook 收到的是一个数组,而不是一个字符串。我已经编辑了问题。 您需要在方括号前后加上引号,就像我在回答中所说的那样。否则它不是有效的 PHP,尽管它是有效的 javascript。顺便说一句,$me 等于什么? 可以使用 var_dump 和 $me 并复制和粘贴结果吗?【参考方案5】:
$string=mysql_real_escape_string($json);

【讨论】:

以上是关于如何将此json数组保存到MYSQL数据库的主要内容,如果未能解决你的问题,请参考以下文章

php如何将mysql数据转为数组

如何在mysql php中保存json数组

C++下如何将json数据存入mysql数据库

将 JSON ARRAY 转换为 NSNumber 数组

PHP:在没有 JSON 的情况下将二维数组保存在数据库中

将 Python 列表(JSON 或其他)插入 MySQL 数据库