【问题标题】:How can I fetch data on codeigniter using current date?如何使用当前日期在 codeigniter 上获取数据?
【发布时间】:2020-07-20 04:18:21
【问题描述】:

这是我在这里的第一个问题,所以请友好:)

我正在尝试使用 Codeigniter 和 MySQL 根据当前日期显示数据。

下面是我的模型函数。

当我使用这种格式时,它可以工作:

public function get_tables(){
    $this->db->where('date','2020-04-07');
    $this->db->order_by('time', 'ASC');  
    $query=$this->db->get('tables');
    return $query->result();
}

但是当我尝试使用CURDATE() 函数时,它在这一行显示一个错误。

public function get_tables(){
    $this->db->where(date_format('date',"YYYY-MM-DD"),'CURDATE()', TRUE);
    $this->db->order_by('time', 'ASC');  
    $query=$this->db->get('tables');
    return $query->result();
}

我很高兴听到它为什么不起作用,欢迎任何改进它的建议。

【问题讨论】:

标签: php mysql codeigniter


【解决方案1】:

来自Codeigniter documentation

$this->db->where() 接受可选的第三个参数。如果您将其设置为 FALSE,CodeIgniter 将不会尝试保护您的字段或表名。

所以,你应该使用

$this->db->where(date_format(new DateTime(),"YYYY-MM-DD"),'CURDATE()', FALSE);

【讨论】:

    【解决方案2】:

    您的date_format 呼叫错误。第一个参数必须是实际日期。不是字符串“日期”。我认为您正在混合使用 PHP 和 MySQL。

    通过使用date_format 作为第二个参数,您可以使用 PHP 创建一个当前日期字符串并将其提供给 MySQL。

    public function get_tables(){
        $this->db->where('date', date_format(new DateTime(), 'YYYY-MM-DD'));
        $this->db->order_by('time', 'ASC');  
        $query=$this->db->get('tables');
    
        return $query->result();
    }
    

    CURDATE() 是一个 MySQL 函数,我认为不可能将原始 MySQL 提供给 where()

    编辑:达姆回答了这个问题。可以将 CURDATE() 与 Codeigniter 一起使用:

    public function get_tables(){
       $this->db->where('date', `CURDATE()`, false);
       $this->db->order_by('time', 'ASC');  
       $query=$this->db->get('tables');
    
       return $query->result();
    }
    

    【讨论】:

      【解决方案3】:

      使用 date() 函数

      public function get_tables(){
      $date=date("Y-m-d H:i:s");
          $this->db->where(date_format,$date);
          $this->db->order_by('time', 'ASC');  
          $query=$this->db->get('tables');
          return $query->result();
      }
      

      【讨论】:

        【解决方案4】:

        谢谢大家,我把你们所有的答案都和这个答案结合起来了:

        how curdate function could return date in mm/dd/yyyy format php

        而且成功了!!

        发布我的模型函数的最新版本,用于根据当前日期显示数据库中的数据:

        公共函数 get_tables() {

         $this->db->where('date =','DATE(CURDATE())',FALSE);
         $this->db->order_by('time', 'ASC');  
         $query=$this->db->get('tables');
        

        return $query->result_array();

        }

        【讨论】:

          猜你喜欢
          • 2013-03-27
          • 1970-01-01
          • 1970-01-01
          • 2011-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多