如何在codeigniter中更新记录?

时间:2019-02-18 18:34:16

标签: php codeigniter

控制器代码

if($this->input->post('update'))
         {
             $n=$this->input->post('pps_pin');
             $e=$this->input->post('pps_address');
             $m=$this->input->post('stm_shipping_type');
             $a=$this->input->post('tsm_time_slot');
             $b=$this->input->post('pps_price');
             $id=$this->input->post('pps_slid');
         $this->Config_model->updaterecords($n,$e,$m,$id,$a,$b);
         redirect('Admin_ctrl/config/view_pincode_price');
         }
    }

型号代码

function updaterecords($n,$e,$m,$id,$a,$b)
    {   
        $id;

        $qr=$this->db->query("UPDATE pincode_price_setup,shipping_type_mst,time_slot_mst SET pps_pin='$n',pps_address='$e',stm_shipping_type='$m',tsm_time_slot='$a',pps_price='$b' WHERE pps_slid='$id'");
        return $qr;
    }

Delivery Method and Delivery Time Slot data are same

enter image description here

enter image description here

enter image description here

5 个答案:

答案 0 :(得分:0)

您应该修改您的代码以使用codeigniter准备好的语句。如果我正确理解了数据库中的关系,则更新记录方法应如下所示:

function updaterecords($n, $e, $m, $id, $a, $b)
{
    $this->db->set('pps_pin', $n);
    $this->db->set('pps_address', $e);
    $this->db->set('stm_shipping_type', $m);
    $this->db->set('tsm_time_slot', $a);
    $this->db->set('pps_price', $b);
    $this->db->join('shipping_type_mst', 'pincode_price_setup.pps_shipping_type = shipping_type_mst.stm_sqlid');
    $this->db->join('time_slot_mst', 'pincode_price_setup.pps_time_slot = time_slot_mst.tsm_sqlid');
    $this->db->where('pps_slid', $id);
    $this->db->update('pincode_price_setup');
}

友善的提示:为变量提供更有意义的名称,使用名为$ pin的变量要比使用$ n容易得多。

答案 1 :(得分:0)

请尝试这样

//Controller Code
function update_record($id){ 
    $update_array = array(
       'pps_pin' => $this->input->post('pps_pin') ///add fields in array which updated  
    );
    $this->modal_name->update($id,update_array);//pass id & array which want to be update
}

//Modal code

function update($id,$array){
    return $this->db->where('id',$id)->update('TABLE_NAME',array);
}

答案 2 :(得分:0)

因此,据我所知,您想更新数据库中的记录。我不会为你写的。我给你看例子。

此代码可能并不完美,但适用于我的localhost项目。

在控制器中创建用于更新记录的功能。

示例:

public function update($id){

    $id = $this->input->post('id');

    //create $data array and add your data to array
    $data = array(
        'nazov_divizia'     =>  $this->input->post('nazov')
    );

    //send this $data array with $id to your update function in model
    $this->Divizia_model->updateData($id, $data);

    //you can create flash message if you want
    $this->session->set_flashdata('message', 'Údaje upravené');

    //redirect to your controller index function
    redirect(base_url().'divizia');
}

创建功能以更新模型中的记录。

示例:

public function updateData($id, $data)
{
    $this->db->where('id_divizia', $id);
    $this->db->update('divizia', $data);
}

答案 3 :(得分:0)

 Try This code



function updaterecords($n, $e, $m, $id, $a, $b) {

             $this->db->set('pps_pin', $n);
             $this->db->set('pps_address', $e);
             $this->db->set('stm_shipping_type', $m);
             $this->db->set('tsm_time_slot', $a);
             $this->db->set('pps_price', $b);
             $this->db->where('pps_slid', $id);
             $this->db->update('pincode_price_setup');
             return ($this->db->affected_rows() != 1) ? false : true;
        }

答案 4 :(得分:0)

一旦加载了代码点火器模型,则其默认update函数将起作用

if($this->input->post('update'))
     {
        $data = [
                'pps_pin' => $this->input->post('pps_pin'),
                'pps_address' => $this->input->post('pps_address'),
                'stm_shipping_type' => $this->input->post('stm_shipping_type'),
                'tsm_time_slot' => $this->input->post('tsm_time_slot'),
                'pps_price' => $this->input->post('pps_price'),
                'pps_slid' => $this->input->post('pps_slid'),
            ];
     $this->Config_model->id = $id;
     $this->Config_model->update($data);

     redirect('Admin_ctrl/config/view_pincode_price');
     }
}

所以我确定我们不需要出于相同的目的在模型中定义单独的功能。