我创建了一个目录,其中包含一系列年份字符搜索功能以及我分配给他们的年份。因此,从1940年到1949年的任何事情都将出现在1940年的时间段内,依此类推。我正在使用href对这些时间帧进行分组。
<?php
$sql = "SELECT * FROM catalog";
$displayby = $_GET['displayby'];
$displayvalue = $_GET['displayvalue'];
if($displayby && $displayvalue){
$sql = "SELECT * FROM catalog WHERE $displayby LIKE '$displayvalue'";
}
if($displayby == 'year'){
$min = $_GET['min'];
$max = $_GET['max'];
$sql = "SELECT * FROM catalog WHERE year BETWEEN '$min' AND '$max'";
}
//$result = mysqli_query($con,$sql);
$result = mysqli_query($con,"SELECT * FROM catalog WHERE year BETWEEN '$min' AND '$max'");
while($row = mysqli_fetch_array($result)){
$name = $row['name'];
$filename = $row['filename'];
$cid = $row['cid'];
echo "\n<div class=\"holder\">";
echo "<a href=\"single.php?cid=$cid\"><img src=\"thumbs/$filename\"></a>";
echo "<a href=\"single.php?cid=$cid\">$name</a><br />\n";
echo "</div>";
}
?>
这个href只能在那些年内调出某些角色:
<a href="index.php?displayby=year&min=1940&max=1949">40's Villans</a><br/>
然而,它们在前几年出现了 - 可能是1945年作为角色的设定日期,但它们只出现在1930年的链接中。
我做错了什么? 编辑:这是表
答案 0 :(得分:2)
BETWEEN ... AND ....
可用于整数和字符串。这样:
BETWEEN 1 AND 3
对于1,2和3都是如此。但是:
BETWEEN 'a' AND 'c'
对于'a','b'和'c'都是如此。
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between
你在数字周围加上引号,将它们变成字符串。因此,对字符进行比较,而不是数字。
删除引号应该会有效。
$result = mysqli_query($con,"SELECT * FROM catalog WHERE year BETWEEN $min AND $max");
但正如其他人所说,代码还有很多其他问题。这个错误是一个不知道自己在做什么的人的症状。为什么不从头开始,拿一本好书。阅读。做例子。实验。成为一名流利的程序员可能需要数年时间。 (这意味着生气,而不是批评。)
答案 1 :(得分:-1)
而不是在两者之间使用,您也可以使用以下语句获取所需数据,如下所示
$sql = "SELECT * FROM catalog WHERE year >= '$min' AND year <='$max'";
并且在phpmyadmin中,您可以运行查询以确保获取正确的数据,之后您可以检查代码的显示位置
我希望它有助于你......