我试图从数据库中获取数据,如果它具有相同的值,这是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
这没有任何回报。
答案 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'";