更新查询在codiegniter中不起作用

时间:2019-03-01 06:27:22

标签: php sql codeigniter

我正在尝试使用codeigniter更新stud表的记录,但未更新记录,请参见 Stud_edit.php 文件的以下代码:

<!DOCTYPE html> 
<html lang = "en">
<head> 
  <meta charset = "utf-8"> 
  <title>Students Example</title> 
</head> 
<body> 
<form method = "" action = "">
 <?php 
        echo form_open('Stud_controller/update_student'); 
        echo form_hidden('old_roll_no',$old_roll_no); 
        echo form_label('Roll No.'); 
        echo form_input(array('id'=>'roll_no',
           'name'=>'roll_no','value'=>$records[0]->roll_no)); 
        echo "
        "; 

        echo form_label('Name'); 
        echo form_input(array('id'=>'name','name'=>'name',
           'value'=>$records[0]->name)); 
        echo "
        "; 

        echo form_submit(array('id'=>'sub mit','value'=>'Edit')); 
        echo form_close();
     ?> 

  </form> 

以下是控制器的代码:

public function update_student(){ 
     $this->load->model('Stud_Model');

     $data = array( 
        'roll_no' => $this->input->post('roll_no'), 
        'name' => $this->input->post('name') 
     ); 

     $old_roll_no = $this->input->post('old_roll_no'); 
     $this->Stud_Model->update($data,$old_roll_no); 

     $query = $this->db->get("stud"); 
     $data['records'] = $query->result(); 
     $this->load->view('Stud_view',$data); 
  }

以下是模型代码:

public function update($data,$old_roll_no) { 
     $this->db->set($data); 
     $this->db->where("roll_no", $old_roll_no); 
     $this->db->update("stud", $data); 
  } 

2 个答案:

答案 0 :(得分:2)

首先,您正在使用2个<form>标签。尝试使用其中一个并同时使用method属性

<form method = "" action = "">
echo form_open('Stud_controller/update_student')

如果您使用set()方法更新查询,则不要在$data函数中使用update()

方法1

没有set()方法

public function update($data,$old_roll_no) { 
 $this->db->where("roll_no", $old_roll_no); 
 $this->db->update("stud", $data); 
} 

方法2

使用set()方法

public function update($data,$old_roll_no) { 
 $this->db->set($data);
 $this->db->where("roll_no", $old_roll_no); 
 $this->db->update("stud"); 
} 

答案 1 :(得分:1)

型号:

public function update($data,$old_roll_no) { 
     $this->db->where("roll_no", $old_roll_no); 
     $this->db->update("stud", $data); 
  }