Как вывести данные из базы в формате JSON (с помощью php)?

Здравствуйте.
Есть 3 таблицы:
1. bio_vet_calendar
1) id
2) doctorid (ID доктора)
3) clinicid (ID клиники)
4) start (тут время)
5) end (тут время)

2. bio_vet_clinic_department
1) clinicid (ID клиники)
2) clinic-name (Название клиники)

3. bio_vet_doctor
1) doctorid (ID доктора)
2) doctor-name (ФИО доктора)

Нужно получить вот такой json
{
   doctorid: '1', - ID доктора
   doctor-name: '1', - Имя доктора
   clinicid: '1', - ID клиники
   clinic-name: '1', - Название клиники
   start: '2019-06-01'
   end: '2019-06-02'
},
{
   doctorid: '2', - ID доктора
   doctor-name: '2', - Имя доктора
   clinicid: '2', - ID клиники
   clinic-name: '2', - Название клиники
   start: '2019-06-03'
   end: '2019-06-04'
},
{
   doctorid: '3', - ID доктора
   doctor-name: '3', - Имя доктора
   clinicid: '3', - ID клиники
   clinic-name: '3', - Название клиники
   start: '2019-06-05'
   end: '2019-06-06'
}

Думаю получать данные только связанные с доктором на странице доктора через
SELECT * FROM bio_vet_doctor where doctorid=1
Помогите кто чем может.
  • Вопрос задан
  • 694 просмотра
Решения вопроса 1
irishmann
@irishmann
Научись пользоваться дебаггером
Держи
<?php
    /* создаем соедиенение с бд*/
    $link = mysqli_connect("localhost", "root", "", "test");

    /* для примера возьмем такой doctorid*/
    $doctorid = 2; 

    /* создаем подготавливаемый запрос */
    $stmt = mysqli_stmt_init($link);
    $sql = '
        SELECT
            cal.`doctorid`,
            doc.`doctor-name`,
            cal.`clinicid`,
            clin.`clinic-name`,
            cal.`start`,
            cal.`end`
        FROM
            `bio_vet_calendar` cal 
            JOIN `bio_vet_clinic_department` clin ON cal.`clinicid` = clin.`clinicid`
            JOIN `bio_vet_doctor` doc ON cal.`doctorid` = doc.`doctorid`
        WHERE
            cal.`doctorid` = ?
    ';
    if (mysqli_stmt_prepare($stmt, $sql)) {
        /* привязываем переменные к параметрам */
        mysqli_stmt_bind_param($stmt, "i", $doctorid);
        /* выполняем запрос */
        mysqli_stmt_execute($stmt);
        /* выбираем данные из результата */
        $response = mysqli_stmt_get_result($stmt);
        /* преобразовываем в ассоциативный массив*/
        $result = mysqli_fetch_all($response, MYSQLI_ASSOC);
        /* закрываем запрос */
        mysqli_stmt_close($stmt);
    }
    
    /* закрываем соединение с бд*/
    mysqli_close($link);
    
    /* выводим JSON */
    echo json_encode($result);

Только соединение с БД поправь на своё.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ответ на вопрос Как вывести:

echo json_encode($result->fetch_all(MYSQLI_ASSOC));


Но проблема в том, что у тебя нет еще никаких данных, ты запрос ещё не составил.

Чтобы узнать, как написать запрос, который вернёт нужные данные, задай отдельный вопрос.
Ответ написан
Комментировать
IgorPI
@IgorPI
Хотите сложную структуру в виде иерархии, используйте ORM.

Мне кажется, так даже быстрее и качественней.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы