@ikfah012
Не самый умный парень в этом чате

Как сохранить одно из значений json в mysql?

Получаю по api ответ в виде json такого вида:
{"data":{"calls":[{"id":"33","caller":{"name":"фио","extension":"100"},"called":[{"isConnected":true,"name":"+7999999999","phone":"+799999999"}],"businessNumber":"+78888888888","dateTimeUtc":"2019-05-31T11:46:02.873Z","duration":"69923","direction":"Outgoing","callStatus":"Connected","callRecord":,

Как мне с помощью php вытащить значение, например, phone и dateTimeUTC, а потом записать его в таблицу mysql?
Наверное, нужно использовать json_decode, но я не разобрался как это сделать правильно.
вардамп результата json_decode:
object(stdClass)#100 (2) { ["data"]=> object(stdClass)#99 (2) { ["calls"]=> array(25) { [0]=> object(stdClass)#2 (9) { ["id"]=> string(36) "33" ["caller"]=> object(stdClass)#3 (2) { ["name"]=> string(25) "фио" ["extension"]=> string(3) "100" } ["called"]=> array(1) { [0]=> object(stdClass)#4 (3) { ["isConnected"]=> bool(true) ["name"]=> string(12) "+799999999" ["phone"]=> string(12) "+79999999999" } } ["businessNumber"]=> string(12) "+78888888888" ["dateTimeUtc"]=> string(24) "2019-05-31T11:57:56.642Z" ["duration"]=> string(4) "4644" ["direction"]=> string(8) "Outgoing" ["callStatus"]=> string(9) "Connected" ["callRecord"]=> object(stdClass)#5 (2) { ["fileName"]=> string(152) и т.п.
  • Вопрос задан
  • 224 просмотра
Решения вопроса 1
fwlone
@fwlone
^^
<?php
$obj = json_decode(вашJSON);
// Внутри у вас будут обьекты called, calls, и т.д.,  
var_dump($obj ->data );
// Внутри у вас будет массив с обьектами внутри called
var_dump($obj ->data ->called);
// Достаем phoneи dateTimeUTC для первого элемента массива
echo 'Phone: ' . $obj->data->called[0]->phone .' | dateTimeUTC: ' . $obj->data->called[0]->dateTimeUtc;
// Достаем все элементы, через цикл
foreach ($obj ->data ->called as $called)
{
  echo 'Phone: ' . $called->phone .' | dateTimeUTC: ' . $called->dateTimeUTC . '<hr/>';
}
// А чтобы записать в базу, так же или сами обращаетесь к конкретному элементу или проходите циклом и сохраняете)
mysqli_query("INSERT INTO `table` (`phone`, `dt_time`) VALUES ('" . $called->phone . "', '" . $called->dateTimeUTC . "')"); 
// Точный запрос не покажу, тут уже какая у вас ORM или какая своя обертка лишь пример 
// Не забывайте про фильтрацию перед записью, мало ли какие данные придут)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы