Я пытаюсь получить данные из базы данных, если имеет равное значение, это часть запроса mySQLi, где:
Запрос:
car_year BETWEEN '$yearArray[0]' AND '$yearToArray[0]'
например:
car_year BETWEEN '2016' AND '2018'
1-я проблема:
Он возвращает данные с 2016 года, но до 2017 года, а не 2018 год.
Вторая проблема:
Если значение будет таким:
car_year BETWEEN '2018' AND '2018'
Он ничего не возвращает, но я хочу вернуть все данные в это значение.
Я также пробовал:
car_year >= '$yearArray[0]' AND car_year <= '$yearToArray[0]'
Но если:
car_year >= '2017' AND car_year <= '2017'
Он возвращает пустой, но должен возвращать данные в этом значении (2017).
Любая идея, как я могу решить эти две проблемы?
Обновить:
if ($year && $yearTo) {
$cleanYearTo = mysqli_real_escape_string($connection, $yearTo);
$yearToArray = explode(",", $cleanYearTo);
$cleanYear = mysqli_real_escape_string($connection, $year);
$yearArray = explode(",", $cleanYear);
$sqli = "SELECT * FROM car WHERE car_year BETWEEN '$yearArray[0]' AND '$yearToArray[0]'";
// rest of code
}
Пример URL:
mywebsite.com/index.php?y=1397,2018&yt=1397,2018
Это ничего не возвращает.
Ваша проблема очевидна, люди с комментариями могут быть смущены из-за того, что вы не пишете какие данные в своей базе данных, но они правы, ваша проблема - ваш тип данных, данные у вас есть comma
в базе данных, например, 1397,2018
? так что вы пытаетесь найти 2018
в 1397,2018
, подумайте дважды! это невозможно, если не использовать LIKE
оператор, например, %2018%
так что по крайней мере ваш запрос должен выглядеть следующим образом:
$sqli = "SELECT * FROM car WHERE car_year BETWEEN '$yearArray[0].",".$yearArray[1]' AND '$yearToArray[0].",".$yearToArray[1]'";
В другой руке вам нужно найти год по значению, 1397,2018
не только 2018
исключением использования оператора LIKE
. Также вы можете сделать это без explode
:
$sqli = "SELECT * FROM car WHERE car_year BETWEEN '$cleanYear' AND '$cleanYearTo'";
Но рекомендуем использовать:
$sqli = "SELECT * FROM car WHERE car_year LIKE '%$cleanYear%' AND car_year LIKE '$cleanYearTo'";