【问题标题】:how to search fields on database with date range on mysql codeigniter如何在mysql codeigniter上使用日期范围搜索数据库中的字段
【发布时间】:2019-03-02 20:44:48
【问题描述】:

我尝试创建一个带有日期范围过滤器的搜索引擎,但每当我在“search_textbox”上键入时,它不包括日期,它只搜索语句“名称”如“%a%”的字段';

if($search !=''):
        $added_query = "and date_created like '%".$search."%' or 
                                name like '%".$search."%' or
                                  alias like '%".$search."%' or
                                  designation like '%".$search."%' 
                                  ";
        else:
        $added_query ="";
        endif;
        $project_details = $this->db->query("SELECT *
                                 FROM ".$query."_man_power
                                  WHERE date_created BETWEEN '".$date_from."' AND '".$date_to."'
                                  ".$added_query."
                                order by date_created desc
                                  ");
            return $project_details;

【问题讨论】:

  • 您在搜索文本框中输入的日期是什么?
  • $search = $this->input->post('search_textbox');
  • 我在搜索字段时尝试在我的表上搜索某些内容我已经设置了我的 date_from 和 date_to 但我的查询只搜索字段并且它不包括我设置的 date_from 和 date_to...我怎么能做得好吗?
  • 正如您所说,您有两个不同的日期 date_from 和 date_to 字段,您如何获取和设置这两个字段的输入?您是否尝试通过输入日期(如 2018/09/01)在表格中进行搜索?
  • 不,我正在尝试通过输入姓名、职务、别名、金额等字段以及我设置的日期范围进行搜索

标签: php jquery codeigniter date-range


【解决方案1】:

您可能没有正确格式化 where 子句中的日期。看: https://www.w3schools.com/SQl/sql_dates.asp

您要确保 $date_from$date_to 根据类型如下所示:

$date_from = '2018-06-01 0:00:00';
$date_to = '2018-06-30 23:59:59';

您可以通过查看更好地检查您的查询以找到问题。

$sql = "SELECT * FROM ".$query."_man_power";
$sql .= " WHERE date_created BETWEEN '".$date_from."' AND '".$date_to."'".$added_query;
$sql .= " order by date_created desc";

var_dump($sql);

$project_details = $this->db->query($sql);

【讨论】:

  • 这是我模型的最后一个查询
  • SELECT * FROM EMJGC_man_power WHERE date_created BETWEEN '2018-09-01' AND '2018-10-01' and date_created like '%a%' or name like '%a%' or alias like ' %a%' 或类似 '%a%' 的名称 order by date_created desc
【解决方案2】:

在组合这些条件时,使用括号很重要,这样数据库才能知道评估每个条件的顺序。因此,使用括号将 AND、OR 条件分组,例如:-

if($search !=''):
    $added_query = "and ( 
        date_created like '%".$search."%' or 
        name like '%".$search."%' or
        alias like '%".$search."%' or
        designation like '%".$search."%' 
        )";
else:
  $added_query ="";
endif;
$project_details = $this->db->query("SELECT *
        FROM ".$query."_man_power
        WHERE date_created BETWEEN '".$date_from."' AND '"
       .$date_to."'".$added_query." order by date_created desc");
        return $project_details;` 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2021-09-07
    • 1970-01-01
    • 2020-04-29
    相关资源
    最近更新 更多