2010-11-13 3 views
3

J'ai fait SQL insertion avec NOW() en utilisant codeigniter. au lieu de l'heure actuelle j'ai 0000-00-00 00:00:00 dans mon recodage db. J'utilise le dernier WAMP comme serveur et je ne comprends pas où est le problème. aidez-moi s'il vous plaît.SQL MAINTENANT() donne 0000-00-00 00:00:00

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

Poster un code. –

+0

Pourriez-vous recopier votre code? –

+5

Merde, vous devez être dans une poche de temps. Pouvez-vous aller vérifier si Jésus a réellement existé? –

Répondre

6

vérifier le type de données de la colonne, et avez-vous citer le NOW(), comme 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 mettre à jour votre schéma pour add_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

mis à jour 2

NOW() est spécifié pour MYSQL, PHP interprété comme une chaîne, et ne peut pas mélanger les deux ensemble

+0

'created' datetime DEFAULT NULL, – Kombuwa

+0

@Kombuwa: dans ce cas,' $ this-> db-> set ('created', time(), TRUE); 'ou' $ this-> db-> set (' created ', date (' Ymd H: i: s ', TRUE); 'devrait pouvoir résoudre votre problème – ajreal

+0

$ this-> db-> set (' created ', time(), TRUE); // non – Kombuwa

1

En fait, la bonne façon de faire cela (i.e. transmettre fonctions SQL pour DB) est de spécifier troisième param être FALSE Exemple:

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

qui va provoquer codeigniter passer deuxième param sans citer ce qui entraîne SQL interprétant comme fonction.

Utile pour:

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

Pour voir de référence: http://codeigniter.com/user_guide/database/active_record.html

Questions connexes