【问题标题】:Codeigniter update from query within controllerCodeigniter 从控制器内的查询更新
【发布时间】:2013-09-18 21:23:05
【问题描述】:

希望我能正确解释一下……

我正在使用 Codeigniter 的表单验证。 如果我的表单将字符串 id 返回给控制器,我该如何使用它来执行数据库查询并使用结果数组来执行更新...

这有意义吗?

function form($id) {
    if ($this->form_validation->run('') == false) {
        //...
    }
    else {
        // Query database where strId = $this->input->post('strId')
        // Put results into an array called $data
        // Update database where id = $this->input->post('id')

        $this->db->where('id', $this->input->post('id'));
        $this->db->update('database', $data);
    }
}

【问题讨论】:

  • 你应该使用模型来执行数据库相关的操作,你还卡在哪里?您知道如何进行查询,我假设您知道如何获取结果,只需按照您提供的伪代码在模型中实现一个函数
  • 我愿意。因此,如果我在模型中以 return $query->result_array(); 结束我的函数,将它作为 $data['query'] 加载到控制器中 - 是我的更新行 $this->db->update('database', $数据['查询']);?我想这是我坚持的 UPDATE 行...@koala_dev

标签: php mysql codeigniter validation controller


【解决方案1】:

控制器:

    //... (if valid) ...
    $this->load->model('myform'); //loads myform_model.php
    $this->myform->update(); //call the update method

模型(myform_model.php):

    function update(){
        $this->load->database();
        $this->db->where('id', $this->input->post('id'));
        $this->db->update('tableName', $data);
    }

注意:您的 id 必须已经存在于数据库表中,因为您使用的是“更新”。要插入数据,请使用 $this->db->insert();

【讨论】:

    【解决方案2】:

    代码很好:

    函数更新($id, $data) {

        $this->db->where('id', $this->input->post('$id'));
        $this->db->update('tableName', $data);
    }
    

    或者喜欢这个:

    函数更新($id, $data) {

        $this->db->where('id', '$id');
        $this->db->update('tableName', $data);
    }
    

    【讨论】:

    • 您能否描述一下这段代码应该在哪里设置以及它如何帮助 OP?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多