Как я могу получить данные на codeigniter, используя текущую дату? - PullRequest
0 голосов
/ 07 апреля 2020

Это мой первый вопрос здесь, так что будьте добры:)

Я пытаюсь отобразить данные с использованием 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();
}

Я буду рад услышать, почему это не работает, любые предложения по улучшению этого будут приветствоваться.

Ответы [ 4 ]

1 голос
/ 08 апреля 2020

Из Документация Codeigniter

$ this-> db-> where () принимает необязательный третий параметр. Если вы установите значение FALSE, CodeIgniter не будет пытаться защитить ваши имена полей или таблиц.

Итак, вы должны использовать

$this->db->where(date_format(new DateTime(),"YYYY-MM-DD"),'CURDATE()', FALSE);
1 голос
/ 08 апреля 2020

Ваш 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().

edit: Dum ответил на этот вопрос. Можно использовать 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();
}
0 голосов
/ 09 апреля 2020

Спасибо всем, я объединил все ваши ответы с этим ответом:

как функция curdate может возвращать дату в формате мм / дд / гггг php

и это сработало !!

Публикация последней версии функции моей модели для отображения данных из БД на основе текущей даты:

publi c function get_tables () {

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

return $ query-> result_array ();

}

0 голосов
/ 08 апреля 2020

использовать дату () funtion

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...