У меня есть запрос, который я строю так:
$filmQuery = "
SELECT nfc_film.title, nfc_film.film_id, nfc_film.description, nfc_film.release_year, nfc_film.rating, nfc_film.last_update, nfc_category.name FROM nfc_film
JOIN nfc_film_category
ON nfc_film.film_id = nfc_film_category.film_id
JOIN nfc_category
ON nfc_film_category.category_id = nfc_category.category_id";
if($search_term && $category){
$filmQuery .= "
WHERE
nfc_film.title LIKE :searchterm
AND
nfc_category.name = :category";
} else if ($search_term && !$category) {
$filmQuery .= "
WHERE
nfc_film.title LIKE :searchterm";
} else if (!$search_term && $category) {
$filmQuery .= "
WHERE
nfc_category.name = :category";
}
$filmQuery .= "
LIMIT 10
OFFSET 0
";
Кажется, это работает правильно, я проверил переменную и запустил ее в моей СУБД, и она работает.
Итак, я связываю параметры (включая привязки параметров для другого запроса):
if($search_term != ''){
$sqlGetFilms->bindParam(':searchterm', $sqlSearchTerm, PDO::PARAM_STR);
$sqlCountFilms->bindParam(':searchterm', $sqlSearchTerm, PDO::PARAM_STR);
}
if($category != ''){
$sqlGetFilms->bindParam(':category', $category, PDO::PARAM_STR);
$sqlCountFilms->bindParam(':category', $category, PDO::PARAM_STR);
}
if($page != ''){
$sqlGetFilms->bindParam(':page', $page, PDO::PARAM_INT);
}
Результат, который я получаю при выполнении этого, - ничто.
Когда я удаляю bindParams и заменяюпараметры в запросе со статическими значениями, запрос возвращает результаты.
Итак, почему bindParams нарушает мой запрос?
РЕДАКТИРОВАТЬ: Это SQL-операторы для 1. нет $search_term
или category
2. оба $search_term
и $category
:
SELECT nfc_film.title, nfc_film.film_id, nfc_film.description, nfc_film.release_year, nfc_film.rating, nfc_film.last_update, nfc_category.name
FROM nfc_film
JOIN nfc_film_category
ON nfc_film.film_id = nfc_film_category.film_id
JOIN nfc_category
ON nfc_film_category.category_id = nfc_category.category_id LIMIT 10 OFFSET 0
SELECT nfc_film.title, nfc_film.film_id, nfc_film.description, nfc_film.release_year, nfc_film.rating, nfc_film.last_update, nfc_category.name
FROM nfc_film
JOIN nfc_film_category
ON nfc_film.film_id = nfc_film_category.film_id
JOIN nfc_category
ON nfc_film_category.category_id = nfc_category.category_id
WHERE
nfc_film.title LIKE :searchterm
AND
nfc_category.name = :category LIMIT 10 OFFSET 0