Как использовать дату и время в Codeigniter?

Я пишу код для информационного бюллетеня с помощью codeigniter, но, пытаясь ввести значение даты и времени в базу данных, я продолжаю получать «0000-00-00 00:00:00» в качестве значения даты и времени, может ли кто-нибудь указать мне правильно направление

Я проверил похожие темы, но, похоже, ни одна из них не работает для меня.

Вот неверный код

<?php 
class Process extends CI_Model {

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }

    function add_quotes($str)
    {
        return "'".$str."'";
    }

     function newsletter_user($log_data)
    {
        $this->load->helper('date');
        date_default_timezone_set('Africa/Lagos'); # add your city to set local time zone
        $now = date('Y-m-d H:i:s');

        $query = $this->db->query('SELECT email FROM newsletter WHERE email ='. $this->add_quotes($log_data['email']));
        if (!empty($query->result()))
        {
            $this->session->set_userdata('error', 'This email is already registered');
        }
        else {

            $this->db->query('INSERT INTO newsletter (first_name, last_name, email, date_subscribe) VALUES ('.$this->add_quotes($log_data['firstname']).', '.$this->add_quotes($log_data['lastname']).', '.$this->add_quotes($log_data['email']).', '.$this->add_quotes($log_data[date('Y-m-d H:i:s')]).')');
            $this->session->set_userdata('error', 'Registration successful! You would be notified once we launch');
        }
        //return $query;
    }


}
?>

Я не вижу, где используется ваша переменная $now, но, вероятно, было бы лучше, чтобы mysql в любом случае заполнил дату автоматически, используя CURRENT_TIMESTAMP в качестве значения по умолчанию.

Jerry 09.04.2019 23:57

Кроме того, я рекомендую использовать параметризованные запросы, а не метод add_quotes — экранирование значений будет намного безопаснее, а ваш код будет легче читать.

Jerry 09.04.2019 23:59

@Jerry, я заменил $now на date('Y-m-d H:i:s'); это то же самое, и мне сказали, что метка времени не работает для DATETIME

Dr who 10.04.2019 00:11

@ Джерри, пожалуйста, что ты имеешь в виду под параметризованными запросами?

Dr who 10.04.2019 00:13

Я должен был сказать "привязки запросов" - codeigniter.com/user_guide/database/queries.html#query-bindi‌​ngs

Jerry 11.04.2019 00:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Получается, что проблема была в $log_data.

это можно решить, удалив '$log_data' любым из этих способов;

$this->db->query('INSERT INTO newsletter (first_name, last_name, email, date_subscribe) VALUES ('.$this->add_quotes($log_data['firstname']).', '.$this->add_quotes($log_data['lastname']).', '.$this->add_quotes($log_data['email']).', '.$this->add_quotes($now).')');

или

$this->db->query('INSERT INTO newsletter (first_name, last_name, email, date_subscribe) VALUES ('.$this->add_quotes($log_data['firstname']).', '.$this->add_quotes($log_data['lastname']).', '.$this->add_quotes($log_data['email']).', '.$this->add_quotes(date('Y-m-d H:i:s')).')');

4 дня за глупую ошибку!

Другие вопросы по теме