'Book ID is required']); exit(); } $bookId = $_GET['id']; // Fetch basic book details $query = "SELECT * FROM book WHERE bookid = :bookId"; $stmt = $conn->prepare($query); $stmt->execute([':bookId' => $bookId]); $book = $stmt->fetch(PDO::FETCH_ASSOC); if (!$book) { echo json_encode(['error' => 'Book not found']); exit(); } // Fetch additional book details $sql = " SELECT b.BookID, b.ISBN, b.Title, b.Genre, b.PublishedYear, b.Description, b.CoverImage, b.TotalCopies, bd.Format, bd.Language, bd.Publisher, bd.Pages FROM Book b LEFT JOIN Book_Details bd ON b.BookID = bd.BookID WHERE b.BookID = :bookId "; $stmt = $conn->prepare($sql); $stmt->bindParam(':bookId', $bookId, PDO::PARAM_INT); $stmt->execute(); if ($stmt->rowCount() === 0) { echo json_encode(['error' => 'Book details not found']); exit(); } $bookDetails = $stmt->fetch(PDO::FETCH_ASSOC); // Merge book details into the original book data $book = array_merge($book, $bookDetails); // Fetch authors associated with the book $sqlAuthors = " SELECT a.AuthorID, a.FirstName, a.LastName FROM Book_Author ba JOIN Author a ON ba.AuthorID = a.AuthorID WHERE ba.BookID = :bookId "; $stmtAuthors = $conn->prepare($sqlAuthors); $stmtAuthors->bindParam(':bookId', $bookId, PDO::PARAM_INT); $stmtAuthors->execute(); $authors = $stmtAuthors->fetchAll(PDO::FETCH_ASSOC); // Fetch all author details $book['authors'] = $authors; // Fetch book copies with their condition $sqlCopies = " SELECT bc.CopyID, bc.Condition FROM Book_Copies bc WHERE bc.BookID = :bookId "; $stmtCopies = $conn->prepare($sqlCopies); $stmtCopies->bindParam(':bookId', $bookId, PDO::PARAM_INT); $stmtCopies->execute(); $copies = $stmtCopies->fetchAll(PDO::FETCH_ASSOC); $book['copies'] = $copies; echo json_encode($book); } catch (PDOException $e) { echo json_encode(['error' => 'Database error: ' . $e->getMessage()]); exit(); } ?>