2014-10-28 73 views
0

我試圖用DataMapper創建一個模型,但是當我用save()插入一些新數據時,它會返回一個錯誤。PHP - CodeIgniter - DataMapper - 保存錯誤()

錯誤

數據庫出錯

您必須使用 「設置」 方法來更新條目。

文件名:C:\ WAMP \ WWW \網站\ SYSTEM \數據庫\ DB_active_rec.php

行號:1174

我在數據庫auto-increment的ID,我用了來自控制器的方法題詞。

代碼

<?php 

    class Utilisateur_model extends DataMapper { 

     var $table = 'utilisateur'; 

     var $validation = array(

      'login' => array(

       'label' => 'Login', 
       'rules' => array('required', 'unique', 'trim') 
      ), 
      'mdp' => array(

       'label' => 'Mot de passe', 
       'rules' => array('required', 'trim') 
      ), 
      'nom_utilisateur' => array(

       'label' => 'Nom', 
       'rules' => array('required', 'trim') 
      ), 
      'prenom_utilisateur' => array(

       'label' => 'Prenom', 
       'rules' => array('required', 'trim') 
      ), 
      'email' => array(

       'label' => 'Email', 
       'rules' => array('required', 'valid_email', 'trim') 
      ), 
      'adresse' => array(

       'label' => 'Adresse', 
       'rules' => array('required', 'trim') 
      ) 
     ); 


     public static function inscription($donnees) { 

      $u = new Utilisateur_model(); 

      $u->login = $donnees['login']; 
      $u->mdp = $donnees['mdp']; 
      $u->nom_utilisateur = $donnees['nom']; 
      $u->prenom_utilisateur = $donnees['prenom']; 
      $u->email = $donnees['email']; 
      $u->adresse = $donnees['adresse']; 

      if($u->save()) { 

       return array(true); 
      } 
      else { 

       return array(false, $u->error->string); 
      } 
     } 
    } 
?> 

線1174是這個方法:

function insert($table = '', $set = NULL) 
{ 
    if (! is_null($set)) 
    { 
     $this->set($set); 
    } 

    if (count($this->ar_set) == 0) 
    { 
     if ($this->db_debug) 
     { 
      return $this->display_error('db_must_use_set'); //line 1174 
     } 
     return FALSE; 
    } 

    if ($table == '') 
    { 
     if (! isset($this->ar_from[0])) 
     { 
      if ($this->db_debug) 
      { 
       return $this->display_error('db_must_set_table'); 
      } 
      return FALSE; 
     } 

     $table = $this->ar_from[0]; 
    } 

    $sql = $this->_insert($this->_protect_identifiers($table, TRUE, NULL, FALSE), array_keys($this->ar_set), array_values($this->ar_set)); 

    $this->_reset_write(); 
    return $this->query($sql); 
} 
+0

你能告訴我們'1174'的代碼行嗎? – eggy 2014-10-28 00:42:47

+0

是的,這條線是在該方法中插入,恰好在此條件: 如果(計數($這個 - > ar_set)== 0){ 如果 ($這個 - > db_debug) { /*線1174 */\t return $ this-> display_error('db_must_use_set'); } return FALSE; } – Gaetan 2014-10-28 00:50:04

回答

0

好吧,我找到了原因...... 因爲在數據庫中的列名是全部大寫和在模型中全部小寫... 但現在它的工作:D