3 votes

SQL NOW() donne 0000-00-00 00:00:00

J'ai fait de l'insertion SQL avec NOW() en utilisant codeigniter. Au lieu de l'heure actuelle, j'ai obtenu 0000-00-00 00:00:00 dans le recode de ma base de données. J'utilise la dernière version de WAMP comme serveur et je n'arrive pas à comprendre où est le problème. Merci de m'aider.

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;
}

6voto

ajreal Points 31456

Vérifiez le type de données de votre colonne, et avez-vous cité le NOW(), comme par exemple insert into table values ("NOW()"); ?

mis à jour

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

ou

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

ou mettez à jour le schéma de votre table en add_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

mise à jour 2

NOW() est spécifié à MYSQL, PHP l'interprète comme une chaîne de caractères, et ne peut pas mélanger les deux.

1voto

Ivan Ivanić Points 1822

En fait, la bonne façon de procéder (c'est-à-dire de passer des fonctions sql à la base de données) est de spécifier que le troisième paramètre doit être FALSE Exemple :

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

Codeigniter passera le deuxième paramètre sans le citer, ce qui fera que sql l'interprétera comme une fonction.

Utile pour :

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

Pour référence, regardez : http://codeigniter.com/user_guide/database/active_record.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X