Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/55: Рейтинг темы: голосов - 55, средняя оценка - 4.51
Заблокирован

Получить ответ в JSON формате из базы данных

24.02.2016, 13:59. Показов 10735. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день!

Возникла такая задача, необходимо по get запросу получить json-ответ.
Пусть есть база данных "города". В ней имеется одна таблица с полями "наименование города". "количество человек, проживающих в нем".

Необходимо по запросу, например: http//www.site.ru/city.php?name=Moskow

получить ответ в формате json
{
city:Moskow,
count:10000
}

Прошу подтолкнуть в правильном направлении, как это можно сделать, как распарсить строку запроса, извлечь данные из базы, сформировать ответ их и отправить в качестве ответа ?

Буду очень благодарен за небольшой пример.

С базами знаком, но с ними работал только используя C# и Java.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.02.2016, 13:59
Ответы с готовыми решениями:

Получить данные в формате json из txt файла
Не могу разобраться с проблемой. у меня есть ссылка на текстовый файл ...

Добавление в бд данных в json формате
Помогите переделать код для json формата. У меня в phpmyadmin есть бд hospital с таблицей patients в json формате. Нужно чтобы через форму...

Вывод данных от сервера в формате JSON
Здравствуйте дорогие форумчане! Помогите пожалуйста получить данные и многомерного массива JSON. Запрос делаю так. try { ...

8
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
24.02.2016, 18:35
Лучший ответ Сообщение было отмечено Geniok как решение

Решение

Из базы вы получаете массив. Потом его пропускаете через json_encode -> профит!
Цитата Сообщение от Geniok Посмотреть сообщение
как распарсить строку запроса
get параметры
Цитата Сообщение от Geniok Посмотреть сообщение
извлечь данные из базы
Тут полно вариантов. Смотрите конкретные технологии и уроки.
Цитата Сообщение от Geniok Посмотреть сообщение
сформировать ответ их
в контролере просто пишите типа такого
PHP
1
return json_encode($array)
1
Заблокирован
24.02.2016, 18:39  [ТС]
Спасибо!
Более -менее понятно.
Остался вопрос парсинга строки запроса .
Есть для этого какие-то средства ?
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
24.02.2016, 19:34
Цитата Сообщение от Geniok Посмотреть сообщение
Остался вопрос парсинга строки запроса .
вам же написали выше массив $_GET
зарос http//www.site.ru/city.php?name=Moskow
PHP
1
echo $_GET['name']; // выведет  Moskow
1
Заблокирован
25.02.2016, 00:24  [ТС]
Спасибо большое!
Писал с телефона, сразу не увидел, что уже все объяснили.
Пошел копать литературу на эту тему.

Добавлено через 2 часа 47 минут
Еще один вопрос возник, как экранировать кавычки в запросе к базе данных ?
Если пишу такой запрос: $result = mysqli_query($link, 'SELECT Name, Population FROM world.city WHERE CountryCode="RUS" ORDER BY Name'), то все нормально работает, а вот если такой: $result = mysqli_query($link, 'SELECT Name, Population FROM world.city WHERE CountryCode="$countryCode" ORDER BY Name'), где $countryCode=RUS, то не работает.

Добавлено через 9 минут
Буду очень признателен, не могли бы покритиковать код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$countryCode = (string)htmlspecialchars($_GET["countrycode"]);
 
    /* Подключение к серверу MySQL */
    $mysqli = new mysqli('localhost', 'user', 'password', 'world');
 
 
    if (mysqli_connect_errno())
    {
        printf("ErrorConnect to Base. Code Error: %s\n", mysqli_connect_error());
        exit;
    }
 
    /* Посылаем запрос серверу */
    if ($result = $mysqli->query('SELECT Name, Population FROM world.city WHERE CountryCode="$countryCode" ORDER BY Name'))
    {
        /* Выборка результатов запроса */
        while( $row = $result->fetch_assoc())
        {            
            printf("%s\n", json_encode($row));            
        }        
        
        /* Освобождаем память */
        $result->close();
    }
 
    /* Закрываем соединение */
    $mysqli->close();
    
    echo 'CountryCode ' . $countryCode . '!';
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
25.02.2016, 00:39
PHP
1
$result = $mysqli->query("SELECT Name, Population FROM world.city WHERE CountryCode = '".$countryCode."' ORDER BY Name");
1
Заблокирован
25.02.2016, 15:47  [ТС]
Все отлично заработало!
Еще раз спасибо!

Добавлено через 14 часов 2 минуты
Возник еще один вопрос, с формированием json разобрался, но он формирует одноуровневый ответ, по типу:
JSON
1
2
3
4
{
   name: "Moskow",
   count: "100"
}

есть ли способы получить многоуровневый вложенный ответ по типу этого, в результате нескольких запросов к базе, к разным таблицам:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
    "coord":
    {
        "lon":57.32,"lat":12.23
    },
    "weather":
    [
        {
            "id":804,
            "main":"Clouds",
            "description":"overcast clouds",
            "icon":"04n"
        }
    ],
    "base":"stations",
    "main":
    {
        "temp":-2.89,
        "pressure":1002.78,
        "humidity":91,
        "temp_min":-2.89,
        "temp_max":-2.89,
        "sea_level":1023.67,
        "grnd_level":1002.78
    },
    "wind":
    {
        "speed":0.81,
        "deg":73.5043
    },
    "clouds":
    {
        "all":88
    },
    "dt":1456349214,
    "sys":
    {
        "message":0.0319,
        "country":"RU",
        "sunrise":1456285830,
        "sunset":1456322377
    }
}
Добавлено через 46 минут
Уже разобрался, необходимо использовать вложенные массивы
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
25.02.2016, 18:58
Цитата Сообщение от Geniok Посмотреть сообщение
Уже разобрался, необходимо использовать вложенные массивы
Или рекурсию можно. Если я правильно понял вас.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
        function Racurs ($arr){
                foreach ($arr as $k=>$v) {
                    echo (is_array($v)) ? Racurs($v) : $k.'=>'.$v."<br/>";
                }
        }   
    $arr = ["wind"=>["speed"=>0.81,"deg"=>73.5043],
            "clouds"=>["all"=>88]
           ];
Racurs($arr);          
        
        ?>
1
Заблокирован
25.02.2016, 19:13  [ТС]
Спасибо огромное, это пожалуй лучше способ будет, а то число массивов начинает слишком быстро расти.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.02.2016, 19:13
Помогаю со студенческими работами здесь

Получение данных в формате JSON - За оплату
Всем привет. Скрипт в 200 строк работает на сервере. Не знаю есть ли смысл выкладывать часть кода на котором возникает ошибка. В...

Формирование json из базы данных
Выполняю запрос в базу данных $sql = $this-&gt;db-&gt;prepare(&quot;select name, email from mybase&quot;); $sql-&gt;execute(); В итоге получаю...

Как передать выборку из базы данных в формат json
Здравствуйте! Стоит следующая задача: Есть база данных с моделями автомобилей и размерами ламп для каждой модели. Выборку из базы по...

Получить ответ в формате Json
Не могу разобраться как получить ответ с api на c#. Помогите получить данные с запроса ...

Boost.Asio. Как получить ответ от сервера в формате json или xml
Все привет, столкнулся с проблемой. Допустим, с помощью boost.asio и OpenSSL я делаю GET запрос сайту, пусть это будет api.vk.com. С...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru