【问题标题】:Codeigniter updating records won't save in DBCodeigniter 更新记录不会保存在数据库中
【发布时间】:2013-05-11 09:59:46
【问题描述】:

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

代码用于更新用户配置文件。

没有错误,但它不会保存到我的数据库中。对此有什么可能的解决方案?

模型 (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();
?>

【问题讨论】:

  • 从这里看来您正在保存与以前相同的数据,那么您怎么知道它没有保存?您收到您添加的任何这些消息吗?另外我不确定您是否可以使用update 的返回值来知道操作的结果:参见this 示例。
  • @Salem 是的。我收到消息“已成功保存!”但是当我查看我的数据库时,表格仍然没有更新。

标签: php mysql database codeigniter


【解决方案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

    );

【讨论】:

    【解决方案2】:

    不工作可能有多种原因。但是,我在您的模型中看到了一些不完全正确的内容。

    除非您在 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 */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-08
      • 2016-06-10
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      相关资源
      最近更新 更多