【问题标题】:Doing a LIKE and a BETWEEN on the same column在同一列上执行 LIKE 和 BETWEEN
【发布时间】: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 之间的年份,这也与正常年份条目为空相匹配)。我应该如何解决这个问题,以便我可以同时拥有两个搜索选项?谢谢!

【问题讨论】:

标签: php html mysql search


【解决方案1】:

您应该使用 OR 而不是 AND。

【讨论】:

  • 当我执行 "$result = mysql_query(" SELECT * FROM DATABASE WHERE year(date_on_ledger) LIKE '%$year%' OR year(date_on_ledger) BETWEEN '%$startyear%' AND '%$ endyear%' ");",它会调出数据库中的每个条目。我认为这是因为它匹配包含“”或开始和结束年份之间的所有内容,并且每个条目都包含“”。
猜你喜欢
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多