【发布时间】:2017-11-23 09:48:40
【问题描述】:
我正在尝试创建一个可在线搜索的数据库。我希望用户能够按年份搜索所有条目,因此如果他们想要特定年份,则有一个搜索框。如果他们想输入年份范围,我会为此放置两个搜索框,它们映射到变量“startyear”和“endyear”。这是我的 php 文件中的代码:
<?php
$year=$_GET['year'];
$startyear=$_GET['startyear'];
$endyear=$_GET['endyear'];
$result = mysql_query(" SELECT * FROM DATABASE WHERE year(date_on_ledger) LIKE '%$year%' AND year(date_on_ledger) BETWEEN '%$startyear%' AND '%$endyear%' ");
这不起作用,当我尝试输入开始和结束年份时,它没有给我任何结果。我认为这是因为 AND (它试图找到 start 和 endyear 之间的年份,这也与正常年份条目为空相匹配)。我应该如何解决这个问题,以便我可以同时拥有两个搜索选项?谢谢!
【问题讨论】:
-
请stop using
mysql_*functions。 These extensions 已在 PHP 7 中删除。了解 PDO 和 @987654325 的 prepared 语句@ 并考虑使用 PDO,it's really pretty easy。 -
year列的格式是什么? -
尝试使用 OR 而不是 AND。另外,请尝试从 $startyear 和 $endyear 中删除百分比。
-
我将研究 PDO,但我想弄清楚为什么无论如何这都不起作用,因为这似乎是一个非常基本的想法。我相信,年份列将所有内容存储为字符串。我尝试删除百分号并使用 OR,但这只是使其输出数据库中的每个条目。