SQL NOW () дает 0000-00-00 00:00:00 - PullRequest
       0

SQL NOW () дает 0000-00-00 00:00:00

3 голосов
/ 13 ноября 2010

Я сделал вставку SQL с NOW (), используя codeigniter. вместо текущего времени я получил 0000-00-00 00:00:00 в моем БД перекодировать. я использую последний WAMP в качестве моего сервера и не могу понять, где проблема. пожалуйста, помогите мне.

function createform($form_data)
{
    $this->db->set('created', 'NOW()',TRUE);
    $this->db->insert('amfbases', $form_data);

    if ($this->db->affected_rows() == '1')
    {
        return TRUE;
    }

    return FALSE;
}

Ответы [ 2 ]

6 голосов
/ 13 ноября 2010

проверьте тип данных вашего столбца, и вы указали в кавычках (), как insert into table values ("NOW()");?

обновлен

$this->db->set('created', time(),TRUE);

или

$this->db->set('created', date('Y-m-d H:i:s'),TRUE);

или обновите схему таблицы до add_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

обновлено 2

NOW() указан для MYSQL, PHP интерпретирует его как строку и не может смешивать их вместе

1 голос
/ 18 июня 2011

На самом деле правильный способ сделать это (т.е. передать функции sql в db) - указать третий параметр равным FALSE Пример:

$this->db->set('created', 'NOW()', FALSE); // notice FALSE

Это заставит codeigniter передавать второй параметр без кавычекв результате sql интерпретирует его как функцию.

Полезно для:

$this->db->set('counter', 'counter + 1', FALSE);

Для справки смотрите: http://codeigniter.com/user_guide/database/active_record.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...