更新查询在 codeigniter 中不起作用

Posted

技术标签:

【中文标题】更新查询在 codeigniter 中不起作用【英文标题】:Update query is not working in codiegniter 【发布时间】:2019-03-01 06:27:22 【问题描述】:

我正在尝试使用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); 
   

【问题讨论】:

删除 $this->db->set() 行 改变'$this->db->update("stud", $data);'到 '$this->db->update("stud");' 【参考方案1】:

首先,您使用了 2 个&lt;form&gt; 标签。尝试使用一个并使用method属性以及

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

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

方法一

没有set()方法

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

方法二

使用set() 方法

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

【讨论】:

【参考方案2】:

型号:

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

【讨论】:

以上是关于更新查询在 codeigniter 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

or_where 在 codeigniter 模型中不起作用

数据表库在 CodeIgniter 3 中不起作用

DataTables 函数在 Codeigniter 中不起作用

忘记密码功能在 CodeIgniter 中不起作用

我的自动完成功能在 codeigniter 中不起作用

Codeigniter:php 在视图中不起作用!