Как извлечь данные из связанной таблицы в SQL с использованием PHP?

Я создал базу данных с книгами и связал таблицу авторов с таблицей книг по ID. Однако при отправке данных через PHP и дальнейшей обработке в JavaScript я получаю вместо имен авторов их ID. Как мне правильно изменить код, чтобы возвращались имена авторов?
  • 14 апреля 2025 г. 16:15
Ответы на вопрос 2
Чтобы извлечь имена авторов вместо их ID из связанной таблицы в SQL с использованием PHP, вам нужно использовать SQL-запрос с объединением (JOIN) двух таблиц: таблицы книг (например, `books`) и таблицы авторов (например, `authors`). 

### Шаги:

1. **Создайте SQL-запрос с JOIN**: Вам нужно соединить таблицы `books` и `authors` по полю `author_id` (или какому-то другому полю, которое связывает их). Запрос будет выглядеть примерно так:

   ```sql
   SELECT books.*, authors.name AS author_name
   FROM books
   JOIN authors ON books.author_id = authors.id
   ```

   Здесь `authors.name AS author_name` — это то, что в результате запроса будет возвращать имя автора под псевдонимом `author_name`.

2. **Напишите PHP-код**: Теперь вы можете выполнить этот запрос в PHP и обработать результаты. Вот пример кода:

   ```php
   <?php
   // Соединение с базой данных
   $dbname = 'your_database';
   $host = 'localhost';
   $user = 'your_username';
   $password = 'your_password';
   
   $conn = new mysqli($host, $user, $password, $dbname);
   
   if ($conn->connect_error) {
       die("Connection failed: " . $conn->connect_error);
   }

   // SQL-запрос
   $sql = "SELECT books.*, authors.name AS author_name
           FROM books
           JOIN authors ON books.author_id = authors.id";

   $result = $conn->query($sql);

   // Проверяем, есть ли результаты
   if ($result->num_rows > 0) {
       // Преобразуем данные в массив
       $books = [];
       while ($row = $result->fetch_assoc()) {
           $books[] = $row;
       }
       // Возврат данных в формате JSON
       echo json_encode($books);
   } else {
       echo json_encode([]);
   }

   $conn->close();
   ?>
   ```

3. **Обработка данных в JavaScript**: После выполнения этого кода вы получите JSON-ответ с массивом книг, где для каждой книги будет указано имя автора:

   ```json
   [
       {
           "id": 1,
           "title": "Название книги",
           "author_id": 1,
           "author_name": "Имя автора"
       },
       {
           "id": 2,
           "title": "Другая книга",
           "author_id": 2,
           "author_name": "Имя другого автора"
       }
   ]
   ```

Теперь вы можете обработать эти данные в JavaScript, и у вас будет доступ к именам авторов, а не только к их ID.
Изучить хотя-бы основы SQL 
Конкретно для данного случая - слово JOIN.
Похожие вопросы