查找两个相等值之间的数据

时间:2018-04-07 19:52:17

标签: php mysql mysqli

我试图从数据库中获取数据,如果它具有相同的值,这是mySQLi查询部分的位置:

查询:

car_year BETWEEN '$yearArray[0]' AND '$yearToArray[0]'

例如:

car_year BETWEEN '2016' AND '2018'

第一个问题:

它从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
}

示例网址:

  

mywebsite.com/index.php?y=1397,2018&yt=1397,2018

这没有任何回报。

1 个答案:

答案 0 :(得分:1)

您的问题显然很明显,评论的人可能会因为您没有在数据库中写入哪些数据而感到困惑,但是他们是对的,您的问题是您的数据类型,您的数据在comma数据库中就像1397,2018 1}}对吗?所以你试图在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'";