2014-02-04 2 views
1

Я хочу сохранить этот массив json, который мой fb-login возвращает в базу данных. Однако я не знаю, как преобразовать это в строку, используя php.Как сохранить этот массив json в базе данных MYSQL

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

Я попробовал этот код ниже, но я даже не совсем уверен, больше ли, что возвращение фб Войти является массив JSON или нет.

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

var_dump(json_decode($json)); 

Как я могу сохранить различные виды спорта в своей базе данных в строке?

Любая помощь будет высоко оценена.

Спасибо.

EDIT: верхняя часть возвращает NULL.


ВТОРОЙ EDIT:

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; 
       } 
+0

Что именно проблема? [json_encode] (http://www.php.net/json_encode) или [serialize] (http://www.php.net/manual/en/function.serialize.php) должны работать нормально. – Peon

+0

$ json должен иметь эти квадратные скобки вокруг снаружи - используйте http://jsoneditoronline.org/, чтобы проверить, действительно ли он JSON. –

+0

И перекрестите пальцы и надейтесь, что вам никогда не придется запрашивать эти структурированные данные, сохраненные в виде строки. Потому что кому нужны нормальные формы? – AlexanderMP

ответ

3
$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); 
+0

это хорошо работает. Тем не менее, я получаю сообщение о том, что то, что я получаю от Facebook, является массивом, а не строкой. Я отредактировал вопрос. – patrick

+0

Вам нужны цитаты до и после квадратных скобок, как я сказал в своем ответе. В противном случае это неверный PHP, хотя он действителен Javascript. Кстати, что такое $ me, равное? –

+0

Можно использовать var_dump с $ me и скопировать и вставить результаты? –

0

Если var_dump (json_decode ($ JSON)) возвращает то, что вы ожидали бы просто сэкономить $ JSON непосредственно в базу данных.

+0

Проблема в том, что код, который у меня есть, возвращает NULL. – patrick

+0

Я хотел бы сохранить строку всех видов спорта. – patrick

+0

вокруг него должны быть квадратные скобки ... попробуйте скопировать его в http://jsoneditoronline.org/, также используйте var_dump (json_decode ($ json, true)), чтобы преобразовать его в ассоциативные массивы. –

1

использование:

$json = serialize($json); 
+0

Теперь вот что возвращается: s: 134: "{" id ":" 108124505876479 "," name ":" Wakeboarding "}, {" id ":" 112003352149145 "," name ":" Bouldering "} , { "идентификатор": "110008522357035", "название": "Футбол"} "; Есть ли способ сохранить спорт? – patrick

+0

$ json = '[{"id": "108124505876479", "name": "Wakeboarding"}, {"id": "112003352149145", "name": "Bouldering"}, {"id": "110008522357035" , "имя": "Гандбол"}]; $ json = json_decode ($ json, true); foreach ($ json as $ value) { $ sports [] = $ value ["name"]; } $ sports = serialize ($ sports); –

+0

Я отредактировал вопрос. Я получаю ошибку, что то, что я получаю от Facebook, является массивом, а не строкой. – patrick

1
$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)); 

посмотреть разницу

Смежные вопросы