Codeigniter更新记录

时间:2011-01-05 17:39:21

标签: php mysql database codeigniter

我在使用Codeigniter框架更新记录时遇到了一些麻烦。我正在使用MVC模式和活动记录。

该代码用于更新用户个人资料。

在我的模型中,Profile_model我有更新功能......

function profile_update() 
    {
        $this->db->where('user_id', 2);
        $this->db->update('user_profiles', $data);              
    }

控制器Profile_crud应从表单中检索数据并将数据发送到模型。

function update() 
    {
        $data = array (
            'country' => $this->input->post('country'),
            'website' => $this->input->post('website')         
        );

        $this->load->model('Profile_model');
        $this->Profile_model->profile_update($data);
    }

和我视图中的表单profile.php在提交时,它会在我的控制器中触发update函数。

更新

<?php echo form_open('profile_crud/update'); ?>

<p>
<label for="country">Country</label>
<input type="text" name="country" id="country" />
</p>
<p>
<label for="website">Website</label>
<input type="text" name="website" id="website" />
</p>

<p><input type="submit" value="Save" /></p>

<?php echo form_close(); ?>

当我提交表单时,我会收到3种错误。

  

遇到PHP错误

     

严重性:注意

     

消息:未定义的变量:数据

     

文件名:models / profile_model.php

     

行号:27

第27行是$this->db->update('user_profiles', $data);

  

遇到PHP错误

     

严重性:警告

     

消息:无法修改标头   信息 - 已经发送的标题   (输出始于   /home1/requestg/public_html/housedwork/system/libraries/Exceptions.php:166)

     

文件名:codeigniter / Common.php

     

行号:356

  

发生数据库错误

     

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

我不确定我做错了什么..有人可以帮忙吗?

3 个答案:

答案 0 :(得分:15)

对于profile_update函数,您指定的参数为$data

$this->Profile_model->profile_update($data);

但是在你的模型函数中,你还没有指定一个:

function profile_update() 
{
    $this->db->where('user_id', 2);
    $this->db->update('user_profiles', $data);              
}

应该是:

function profile_update($data) 
{
    $this->db->where('user_id', 2);
    $this->db->update('user_profiles', $data);              
}

答案 1 :(得分:3)

您的profile_update()缺少$ data参数

function profile_update($data) 
{
    $this->db->where('user_id', 2);
    $this->db->update('user_profiles', $data);              
}

答案 2 :(得分:3)

您的模型Profile_model未收到任何参数。

function profile_update($data) {
    return $this->db
       ->where('user_id', 2)
       ->update('user_profiles', $data);
}