@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 или какая своя обертка лишь пример 
// Не забывайте про фильтрацию перед записью, мало ли какие данные придут)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽