2013-05-11 106 views
0

我在使用Codeigniter框架更新記錄時遇到了一些問題。我正在使用MVC模式和活動記錄。Codeigniter更新記錄不會保存在數據庫中

該代碼用於更新用戶配置文件。

沒有錯誤,但它不會保存到我的數據庫。可能的解決方案是什麼?

模型(model_users.php)

public function profile_update() 
{ 

    $user_profile = $this->db->get('ij_users'); 

    if($user_profile) { 

     $row = $user_profile->row(); 

     $data = array(

     'user_fname' => $row->user_fname, 
     'user_lname' => $row->user_lname, 
     'user_pass' => $row->user_pass, 
     'user_company' => $row->user_company 

     ); 

     $user_update = $this->db->update('ij_users', $data); 
    } 

    if($user_update) { 

     return true; 

    } 

    return false; 
} 

控制器(members.php)

public function validate() 
{ 

    $this->load->library('form_validation'); 

    $this->form_validation->set_rules('user_fname', 'First name', 'trim|xss_clean'); 
    $this->form_validation->set_rules('user_lname', 'Last name', 'trim|xss_clean'); 
    $this->form_validation->set_rules('user_pass', 'Password', 'required|trim|xss_clean'); 
    $this->form_validation->set_rules('user_re_pass', 'Re-type Password', 'required|trim|xss_clean|matches[user_pass]'); 
    $this->form_validation->set_rules('user_company', 'Company name', 'trim|xss_clean'); 

    if($this->form_validation->run()) { 

     $this->load->model('model_users'); 

     if($this->model_users->profile_update()) { 

      //update database 
      //show successfull message 
      echo "Successfully saved!"; 

     } else { 

      //show error updating message 
      echo "Problem adding to database 2."; 

     } 

    } else { 

     //show error message 
     echo "Problem adding to database."; 
    } 
} 

視圖(profile.php)

<div class="form-signin"> 
<?php echo form_open('members/validate'); ?> 

<?php 
    echo '<div class="alert alert-error"><button type="button" class="close" data-dismiss="alert">&times;</button><h5>All fields are required!</h5>'; 
    echo validation_errors(); 
    echo '</div>'; 

    echo "<p><strong>Email address </strong></p>"; 
    echo form_input('user_email', $this->input->post('user_email'), 'disabled'); 

    echo "<p><strong>First name</strong></p>"; 
    echo form_input('user_fname', $this->input->post('user_fname')); 

    echo "<p><strong>Last name</strong></p>"; 
    echo form_input('user_lname', $this->input->post('user_lname')); 

    echo "<p><strong>Password </strong></p>"; 
    echo form_password('user_pass'); 


    echo "<p><strong>Re-type password </strong></p>"; 
    echo form_password('user_re_pass'); 

    echo "<p><strong>Company name</strong></p>"; 
    echo form_input('user_company', $this->input->post('user_company')); 

    echo "<p>"; 
    echo form_submit('save_submit', 'Save changes', 'class="btn btn-primary"'); 
    ?> 
    <a href="<?php echo base_url() . "members" ?>" class="btn btn-link btn-small">Cancel</a> 
    <?php 
    echo "</p>"; 

    echo form_close(); 
?> 

+0

從這裏看來你保存了以前的相同數據,所以你怎麼知道它沒有保存?你會得到你添加的任何消息嗎?另外我不確定你可以使用'update'的返回值來知道操作的結果:參見[​​this](http://stackoverflow.com/q/8149595/1205368)示例。 – Salem 2013-05-11 10:23:19

+0

@Salem是的。我收到了「成功保存!」的消息但是當我看着我的數據庫時,表格仍然沒有更新。 – AmirolAhmad 2013-05-11 11:06:25

回答

0

可能有多種原因不起作用。但是,我在你的模型中看到了一些不完全正確的東西。

除非你有users表中只有一個行(即使在當時不知道這工作),你應該使用:

$user_profile = $this->db->get_where('ij_users',array('id'=>$this->session->usedata('id'))); 

/*supposing you have id as PK in the table, an active session for that id, and want to get the logged in profile user data */ 
1

通過查看你的模型的代碼,我看不出有任何主鍵ID,這是記錄需要更新的地方。因此,將ID添加到模型文件中的$ data數組中。

$data = array(
    'user_id/id' => $row->id //********* add id here ********* 
    'user_fname' => $row->user_fname, 
    'user_lname' => $row->user_lname, 
    'user_pass' => $row->user_pass, 
    'user_company' => $row->user_company 

    ); 
相關問題