Получить значения строк MySQL в PHP и отобразить несколько значений определенных строк

название немного расплывчато в том, что я хочу сделать, поэтому я объясню здесь. У меня есть две таблицы, из которых я получаю информацию: таблица книг и таблица инвентаризации. Я получаю Название книги, Имя автора и ISBN из таблицы Книги, и я объединяю Количество и Расположение Библиотеки из Инвентаря в одну. Я хочу, чтобы информация выглядела как

Title of Book
By Author1 Name and Author2 Name
ISBN: 740-fojsd99
(0) Copies available at Location2
(3) Copies available at Location5

когда я получаю эхо информацию в php, он получает только первую строку таблицы инвентаризации, и эхо это нравится

22 11 63
By Stephen King
ISBN: 9788401344106
(0) Copies at the location of Sylvania Public Library

Должно выглядеть

22 11 63
By Stephen King
ISBN: 9788401344106
(0) Copies at the location of Sylvania Public Library
(2) Copies at the location of Toledo Public Library
(1) Copies at the location of Carson Library

Я пытался разобрать, использовать foreach и использовать два отдельных запроса, чтобы получить то, что я хотел показать, но я немного новичок в PHP и все еще изучаю, как он работает.
Мой PHP-код выглядит следующим образом

$sql = "SELECT Book.Book_Title,
Book.Author_Name,
Book.Book_ISBN
FROM Book
GROUP BY Book_Title";$result = mysqli_query($conn,$sql);while($row = mysqli_fetch_assoc($result))
{
//var_dump($row);
//had var_dump($result->num_rows); here
echo "<b><u>". $row["Book_Title"] ."</u></b><br>";
echo "By ". $row["Author_Name"]. "<br>";
echo "ISBN: ". $row["Book_ISBN"] . "<br><br>";

$ISBN = $row['Book_ISBN'];

$sql2 = "SELECT CONCAT('<DD>(',Inventory.Quantity, ') Copies at the location of ', Inventory.Library_Location,'</DD>') as nCopies
FROM Inventory
JOIN Book
ON Inventory.Book_Id=Book.Book_Id
WHERE $ISBN = Book.Book_ISBN";

$result2 = mysqli_query($conn,$sql2);

while ($row = mysqli_fetch_assoc($result2))
{
echo "" . $row["numOfCopies"] . "<br>";
var_dump($row);
}

var_dump($row);

}

Делаю так в моем БД

SELECT Book.Book_Title,
Book.Author_Name,
Book.Book_ISBN
FROM Book
GROUP BY Book_Title

Дал мне выход

+-----------------------------------------+-------------------------------------------+---------------+
| Book_Title                              | Author_Name                               | Book_ISBN     |
+-----------------------------------------+-------------------------------------------+---------------+
| 22 11 63                                | Stephen King                              | 9788401344106 |
| A Good Marriage                         | Stephen King                              | 9781401104428 |
| Bag of Bones                            | Stephen King                              | 9780671024239 |
| Carrie                                  | Stephen King                              | 9780307743664 |
| Cell                                    | Stephen King                              | 9781416424419 |
| Christine                               | Stephen King                              | 9780441160447 |
| Cujo                                    | Stephen King                              | 9780441161342 |
| Dark Souls: Design Works                | From Software                             | 9781926778891 |
| Desperation                             | Stephen King                              | 9781101137994 |
| Doctor Sleep                            | Stephen King                              | 9781441698844 |
| Dragon Age Inquisition: Official Guide  | David Knight                              | 9780804162944 |
| Duma Key                                | Stephen King                              | 9788401338090 |
| Everythings Eventual                    | Stephen King                              | 9780743447344 |
| Hearts in Atlantis                      | Stephen King                              | 9780671024246 |
| Heir to the Jedi: Star Wars             | Kevin Hearne                              | 9780344444848 |
| Insomnia                                | Stephen King                              | 9781101138007 |
| IT                                      | Stephen King                              | 9780441169418 |
| Joyland                                 | Stephen King, Hannes Riffel               | 9783641147074 |
| Mile 81                                 | Stephen King                              | 9781441664604 |
| Mr. Mercedes                            | Stephen King                              | 9781476744474 |
| Pet Sematary                            | Stephen King                              | 9780743412278 |
| Prince Caspian                          | C.S. Lewis, Pauline Baynes                | 9780064404003 |
| process control 221 Success Secrets     | David Knight                              | 9781488844672 |
| Secret Window                           | Stephen King                              | 9780441213469 |
| Skeleton Crew                           | Stephen King                              | 9780441168610 |
| Star Wars DarkSaber                     | Kevin J. Anderson                         | 9780307796417 |
| Star Wars I, Jedi                       | Michael A. Stackpole                      | 9780443478737 |
| Star Wars Mad Libs                      | Roger Price, Leonard Stern                | 9780843132717 |
| Star Wars Red Harvest                   | Joe Schreiber                             | 9780344418490 |
| Star Wars The Essential Atlas           | Jason Fry, Daniel Wallace                 | 9780344477644 |
| Star Wars: Choices of One               | Timothy Zahn                              | 9780344411263 |
| Star Wars: Dark Empire Trilogy          | Tom Veitch, Jim Baikie, Cam Kennedy       | 9781302466434 |
| Star Wars: Jedi Academy                 | Jeffery Brown                             | 9780444404178 |
| Star Wars: Rebel Force: Hostage         | Alex Wheeler                              | 9781484720226 |
| Star Wars: Riptide                      | Paul S. Kemp                              | 9780344422467 |
| Star Wars: Rise and Fall of Darth Vader | Ryder Windham                             | 9781484717874 |
| Tarkin: Star Wars                       | James Luceno                              | 9780344411422 |
| The Dead Zone                           | Stephen King                              | 9780441144747 |
| The Horse and His Boy                   | C.S. Lewis, Pauline Baynes                | 9780064471060 |
| The Last Battle                         | C.S. Lewis, Pauline Baynes, David Wiesner | 9780064404034 |
| The Legend of Zelda: Hyrule Historia    | Patrick Thorpe                            | 9781616440417 |
| The Lion, the Witch and the Wardrobe    | C.S. Lewis, Pauline Baynes                | 9780064471046 |
| The Magicians Nephew                    | C.S. Lewis, Pauline Baynes                | 9780064471107 |
| The Mist                                | Stephen King                              | 9780441223296 |
| The Running Man                         | Stephen King, Richard Bachman             | 9780441197962 |
| The Shining                             | Stephen King                              | 9780344806789 |
| The Stand                               | Stephen King                              | 9780307743688 |
| The Tommyknockers                       | Stephen King                              | 9780441146600 |
| Thinner                                 | Stephen King, Richard Bachman             | 9780441161344 |
| Under the Dome                          | Stephen King                              | 9781476734474 |
+-----------------------------------------+-------------------------------------------+---------------+

и делать

SELECT CONCAT('<DD>(',Inventory.Quantity, ') Copies at the location of ', Inventory.Library_Location,'</DD>') as nCopies
FROM Inventory
JOIN Book
ON Inventory.Book_Id=Book.Book_Id

(пришлось удалить GROUP BY Book_Title, потому что он сказал, что столбец «Book_Id» в выражении группы является неоднозначным) дал мне результаты

+----------------------------------------------------------------+
| nCopies                                                        |
+----------------------------------------------------------------+
| <DD>(0) Copies at the location of Sylvania Public Library</DD> |
| <DD>(1) Copies at the location of Carson Library</DD>          |
| <DD>(2) Copies at the location of Commuter Public Library</DD> |
| <DD>(0) Copies at the location of Sylvania Public Library</DD> |
| <DD>(2) Copies at the location of Toledo Public Library</DD>   |
| <DD>(1) Copies at the location of Carson Library</DD>          |
| <DD>(1) Copies at the location of Carson Library</DD>          |
| <DD>(2) Copies at the location of Commuter Public Library</DD> |
| <DD>(2) Copies at the location of Toledo Public Library</DD>   |
| <DD>(2) Copies at the location of Sylvania Public Library</DD> |
+----------------------------------------------------------------+

Edit: Last Редактировать циклы while, и результаты возвращались следующим образом

22 11 63
By Stephen King
ISBN: 9788401344106
(0) Copies at the location of Sylvania Public Library
(2) Copies at the location of Toledo Public Library
(1) Copies at the location of Carson Library
A Good Marriage
By Stephen King
ISBN: 9781401104428
(1) Copies at the location of Carson Library
(2) Copies at the location of Commuter Public Library
Bag of Bones
By Stephen King
ISBN: 9780671024239
(2) Copies at the location of Toledo Public Library
(2) Copies at the location of Sylvania Public Library
Cell
By Stephen King
ISBN: 9781416424419
(0) Copies at the location of Sylvania Public Library
(1) Copies at the location of Carson Library
(2) Copies at the location of Commuter Public Library

Спасибо @nomistic за помощь, ценю это!

2

Решение

Вы можете попробовать что-то вроде этого. По сути, нужно работать с результатами, полученными для конкретной книги, и затем проходить по местам. (Я знаю, что это немного неуклюже, но это должно сделать работу). Проблема, с которой вы столкнулись выше, заключается в том, что вы выбиваете только первый ряд; PHP не знает, как перебрать подсекцию вашего исходного запроса, если вы не скажете это.

while($row = mysqli_fetch_assoc($result))
{
//had var_dump($row); here
//had var_dump($result->num_rows); here
echo "<b><u>". $row["Book_Title"] ."</u></b><br>";
echo "By ". $row["Author_Name"]. "<br>";
echo "ISBN: ". $row["Book_ISBN"] . "<br>";$ISBN = $row['Book_ISBN'];$sql2 = "SELECT CONCAT('<DD>(',Inventory.Quantity, ') Copies at the location of ', Inventory.Library_Location,'</DD>') as numOfCopies
FROM Book
JOIN Inventory
ON Book.Book_Id=Inventory.Book_Id
WHERE Book.Book_ISBN = '$ISBN'
GROUP BY Book_Title";
$result2 = mysqli_query($conn,$sql2);

while ($row = mysqli_fetch_assoc($result2)) {
echo "" . $row["numOfCopies"] . "<br>";

}

}

Обратите внимание, что вы также можете очистить свой первый запрос, чтобы выдвигать только результаты, необходимые для первого раунда.

Редактировать: только что прилагается $ISBN в одинарных кавычках, потому что я вижу, вы рассматриваете это как строку. (Хотя я должен сказать, что это очень странный номер ISBN в вашем примере; обычно они числовые и часто хранятся с дефисами, но не буквенно-цифровыми)

1

Другие решения

Других решений пока нет …