Найти данные между двумя равными значениями

0

Я пытаюсь получить данные из базы данных, если имеет равное значение, это часть запроса 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

Это ничего не возвращает.

  • 2
    какой тип данных car_year? .. и добавить правильный образец данных
  • 0
    @scaisEdge VARCHAR, это имеет значение?
Показать ещё 5 комментариев
Теги:
mysqli

1 ответ

1
Лучший ответ

Ваша проблема очевидна, люди с комментариями могут быть смущены из-за того, что вы не пишете какие данные в своей базе данных, но они правы, ваша проблема - ваш тип данных, данные у вас есть 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'";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню