【问题标题】:PHP - CodeIgniter - DataMapper - error with save()PHP - CodeIgniter - DataMapper - 保存错误()
【发布时间】:2014-10-28 00:32:53
【问题描述】:

我尝试使用 DataMapper 制作模型,但是当我使用 save() 插入一些新数据时,它返回错误。

错误

发生数据库错误

您必须使用“set”方法来更新条目。

文件名:C:\wamp\www\website\system\database\DB_active_rec.php

行号:1174

我在数据库中有一个 ID 为auto-increment,我使用了来自控制器的方法铭文。

代码

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

【问题讨论】:

  • 你能告诉我们1174的代码行吗?
  • 是的,这一行在insert方法中,正好在这个条件下: if (count($this->ar_set) == 0) { if ($this->db_debug) { /*line第1174章} 返回假; }

标签: php codeigniter save datamapper


【解决方案1】:

好吧,我知道为什么... 因为数据库中的列名都是大写的,而模型中的列名都是小写的...... 但现在它的工作:D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多