Не выполняется условие запроса
Есть функция поиска, которая выбирает условия поиска, исходя из значения $select. Но Это не работает, выполнятся всегда поиск по значению $select == 'all'. Сама функция:
function magazine_search($query, $select){
if($select == 'all') {
$query = clear($query);
try {
$dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8', HOST, DB);
$pdo = new PDO($dsn, USER, PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "<p>Запрос на выборку данных из бызы не прошёл. Напишите об этом администратору <a href='mailto:admin@torawhite.ru'>admin@torawhite.ru</a>.</p><br>ERROR: " . $e->getMessage();
exit;
}
$sql = 'SELECT * FROM articles WHERE article_title LIKE :query1 OR article_description LIKE :query2 OR article_text LIKE :query3';
$data = $pdo->prepare($sql);
$data->bindValue(':query1', '%' . $query . '%', PDO::PARAM_STR);
$data->bindValue(':query2', '%' . $query . '%', PDO::PARAM_STR);
$data->bindValue(':query3', '%' . $query . '%', PDO::PARAM_STR);
$data->execute();
$result_search = $data->fetchAll(PDO::FETCH_ASSOC);
if (count($result_search) < 1) {
$result_search['notfound'] = "<div class='search_title'><span>По Вашему запросу статей не найдено</span></div>";
}
return $result_search;
}elseif ($select == 1) {
$query = clear($query);
try {
$dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8', HOST, DB);
$pdo = new PDO($dsn, USER, PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "<p>Запрос на выборку данных из бызы не прошёл. Напишите об этом администратору <a href='mailto:admin@torawhite.ru'>admin@torawhite.ru</a>.</p><br>ERROR: " . $e->getMessage();
exit;
}
$sql = 'SELECT * FROM articles WHERE article_title LIKE :query1 OR article_description LIKE :query2 OR article_text LIKE :query3 AND article_par_id = :article_par_id';
$data = $pdo->prepare($sql);
$data->bindValue(':query1', '%' . $query . '%', PDO::PARAM_STR);
$data->bindValue(':query2', '%' . $query . '%', PDO::PARAM_STR);
$data->bindValue(':query3', '%' . $query . '%', PDO::PARAM_STR);
$data->bindValue(':article_par_id', (int)$select, PDO::PARAM_INT);
$data->execute();
$result_search = $data->fetchAll(PDO::FETCH_ASSOC);
if (count($result_search) < 1) {
$result_search['notfound'] = "<div class='search_title'><span>По Вашему запросу статей не найдено</span></div>";
}
return $result_search;
}
}
дальше перечисляются ещё условия, но также в зависимости от цифры в переменной $select
Источник: Stack Overflow на русском