После безуспешных попыток объединения нескольких столбцов для получения единого набора результатов я смог создать хранимую процедуру в своей базе данных, и она делает именно то, что я искал (т. е. возвращает разные результаты из трех разных столбцов) через UNION. Вот так:
Код: Выделить всё
SELECT BiblePeople1 FROM writing UNION
SELECT BiblePeople2 FROM writing UNION
SELECT BiblePeople3 FROM writing
Но мне не удалось отобразить результаты на моей странице PHP. Я хочу использовать PDO. У меня есть это:
Код: Выделить всё
$stmt = $dbh->prepare("CALL combinePeople()");
$stmt->execute();
Что мне не удалось, так это выяснить, как вставить это в форму моего окна поиска, поскольку другие мои окна поиска не используют хранимые процедуры и просто вызывают заданный столбец. Поэтому я просто использую foreach и отображаю строку из нужного столбца.
Как мне сделать что-то подобное с хранимой процедурой? Мне кажется, это было бы просто, но все, что я нашел через поиск, далеко не похоже на то, что я делаю.
Я пробовал, например. добавление
Код: Выделить всё
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
Код: Выделить всё
foreach ($data as $row):
echo $row;
Существует только один запрос: просто извлекаются имена из трех столбцов в одной таблице. Это просто для того, чтобы получить достаточно информации для заполнения раскрывающегося списка поля поиска.
Я использовал хранимую процедуру в основном потому, что она оказалась наиболее работоспособным решением для обработки трех столбцов, как если бы они были одним.
РЕДАКТИРОВАТЬ:
Обратите внимание, что я думал, что хранимая процедура будет проще, поскольку я фактически заставил результаты работать (т.е. отображать нужные значения) при выполнении в PHPmyAdmin, и я изо всех сил пытался получить аналогичные результаты, просто используя вызовы на странице. Однако в конечном итоге я отказался от хранимой процедуры и добился этого:
Код: Выделить всё
$stmt = $dbh->prepare("SELECT BiblePeople1 FROM writing UNION SELECT BiblePeople2 from writing UNION SELECT BiblePeople3 from writing");
$stmt->execute();
$data = $stmt->fetchAll();
Код: Выделить всё
foreach ($data as $row):
Код: Выделить всё
echo $row['BiblePeople1']
Подробнее здесь: https://stackoverflow.com/questions/797 ... re-via-php
Мобильная версия