我创建了一个目录,其中包含用于字符和我分配给他们的年份的年份 block 搜索功能。因此,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 年的链接中。
我做错了什么? 编辑:这是表格
最佳答案
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");
但是正如其他人所说,代码还有很多其他问题。这个错误是一个人并不真正知道他们在做什么的症状。为什么不从头开始,拿一本好书。阅读。做例子。实验。成为一名流利的程序员可能需要数年时间。 (这是一种鼓励,而不是批评。)
关于php - 使用 between、min 和 max 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27353814/