【问题标题】:How to save this json array to MYSQL database如何将此json数组保存到MYSQL数据库
【发布时间】: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_encodeserialize 应该可以正常工作。
  • $json 外面应该有方括号 - 使用 jsoneditoronline.org 检查它是否是有效的 JSON。
  • 并祈祷,希望您永远不必通过保存为字符串的结构化数据进行查询。因为谁需要范式?
  • 我已经编辑了问题。
  • $me 等于什么?还有 $json = '$me['sports']';不是有效的代码。

标签: php mysql arrays json string


【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多