Я в процессе рефакторинга PHP-скрипта (переход от mysqli к PDO). Его цель - создать список ресурсов для сайта и позволить пользователям фильтровать их. Существует также базовая функция поиска. Все в переделанном скрипте работает нормально, кроме функции поиска. Попытка поиска не дает результатов. Информация присутствует в базе данных, и я не могу найти никаких ошибок в журналах Apache. Вот код:
require_once('web_misc_config');
...
$search=(isset($_GET['search']) ? $_GET['search'] : null);
$search= addslashes($search);
$searchletter=(isset($_GET['searchletter']) ? $_GET['searchletter'] : null);
//This while loop creates the searched version of the A to Z list.
if (!empty($search)){
$result = $con->prepare("SELECT title,summary,url,coverage,format FROM
dbs where title like :search or summary like :search");
$result->bindParam(':search', $search, PDO::PARAM_STR);
$result->execute();
while($row = $result->fetch())
{
$url=$row['url'];
$title=$row['title'];
$summary=$row['summary'];
$coverage=$row['coverage'];
$format=$row['format'];
echo ('<p><h6><a href="' . $url . '">' . $title . '</a></h6>
<br />' . $summary . '</p>');
}
}
//This block creates the filtered and searched version of the list.
elseif (!empty($searchletter)) {
$result = $con->prepare("SELECT title,summary,url,coverage,format,fletter FROM dbs where fletter = :searchletter");
$result->bindParam(':searchletter', $searchletter);
$result->execute();
while($row = $result->fetch())
{
$url=$row['url'];
$title=$row['title'];
$summary=$row['summary'];
$coverage=$row['coverage'];
$format=$row['format'];
echo ('<p><h6><a href="' . $url . '">' . $title . '</a></h6>
<br />' . $summary . '</p>');
}
}
//This block loop creates the inital A to Z list.
else {
$result = $con->prepare("SELECT title,summary,url,coverage,format FROM dbs");
$result->execute();
while($row = $result->fetch())
{
$url=$row['url'];
$title=$row['title'];
$summary=$row['summary'];
$coverage=$row['coverage'];
$format=$row['format'];
echo ('<p><h6><a href="' . $url . '">' . $title . '</a></h6>
<br /> ' . $summary . '</p>');
}
}
$result = null;
$con = null;
Блоки ELSEIF и ELSE работают нормально. Первоначальный, нефильтрованный список заполняется, и пользователи могут фильтровать его по алфавиту. Они включены сюда для полноты и сравнения. Проблема в цикле while в блоке IF (под первым комментарием). Он оценивается как ложное, в результате чего вместо результатов поиска появляется пустой экран. Он должен принимать значение true, пока результаты извлекаются из базы данных. Кто-нибудь может увидеть то, что я мог пропустить?