使用codeigniter更新/更改数据库中的值

时间:2013-09-24 19:20:26

标签: php mysql codeigniter

Iam使用codeIgniter进行开发,我设法简单地将一个id号码和电话号码发布到一个名为“offers”的表中,这两个字段都是INT,但是当我尝试更新对应于特定ID的电话号码时,我一直得到跟随错误

'字段列表'中的未知列'mysubmit'

更新offers设置phneNum ='078444',mysubmit ='提交表单'WHERE idNum ='12'

文件名:C:\ xampp \ htdocs \ project \ system \ database \ DB_driver.php

我已在下面列出了我的控制器,型号和视图

newOffer /控制器                        

     class newOffer extends CI_Controller {
  function addOffer() {
 //if the form is submitted           
  $this->load->view("check");
 $this->load->model("offer_model");
   if ($this->input->post('mysubmit')) {

       $this->offer_model->entry_insert();
            }

    }
   function updateOffer (){
    $this->load->view("check");
 $this->load->model("offer_model");
 if ($this->input->post('mysubmit')) {
    // $this->offer_model->upddata();
  $this->offer_model->upddata($this->input->post());
   }


  }
 }
 ?>

offer_model     

  class offer_model extends CI_Model{
   public function entry_insert(){
     $data = array(
       'idNum' => $this->input->post('idNum'),
        'phneNum' => $this->input->post('phneNum'),

    );

   $this->db->insert('offers',$data);

}
 public function upddata($data) {
             $data=array();

         $idNum = $data['idNum'];
    $data=$this->input->post(); //get all post value to data array

    unset($data['idNum']); // unset unnecessary values 
   $this->db->where('idNum', $idNum)->update('offers' ,$data);
   return true;
}



}


 ?>

视图                                        //             请输入新优惠的详细信息

        <label for="ID Number">ID Number:  <span class="required">*</span></label>
        <input type="text" name="idNum" id="idNum" placeholder="Please enter ID   Number/>
        <label for="phone Number">Phone Number:</label>
       <input type="text" name="phneNum" id="phneNum   " placeholder="Please enter phone Number"/>

         <fieldset class="submit_field">
          <?php echo form_submit('mysubmit', 'Submit Form'); ?>
       </fieldset>

       </div><!-- end of form div -->
    ?>

3 个答案:

答案 0 :(得分:2)

您的问题似乎出现在您的模型函数中:

 public function upddata($data) {
         $data=array();

     $idNum = $data['idNum'];
$data=$this->input->post(); //get all post value to data array

unset($data['idNum']); // unset unnecessary values 
$this->db->where('idNum', $idNum)->update('offers' ,$data);
return true;
}

第二行,$ data = array();从技术上擦除传入的变量中的数据并创建一个新的空白数组。所以第三个语句将为$ idNum返回null。相反,您可以直接使用$ data变量来构造where子句。

public function upddata($data) {
//do necessary data validation here or in the controller.
 $idNum = $data['idNum'];
//not needed you already have the data in the $data var//$data=$this->input->post();
unset($data['idNum']); // unset unnecessary values 
$this->db->where('idNum', $idNum);
$this->db->update('offers' ,$data);
return true;
}

答案 1 :(得分:0)

提交表单时,提交按钮也是输入,并随帖子一起发送。然后,您将其发送到更新方法,因此它正在查找“mysubmit”列(您的提交输入的名称)以更新为提交按钮的值。

在将其发送到更新方法之前,您需要unset($data['mysubmit'])

你还需要摆脱$data = array();。我认为那是出于调试目的。

答案 2 :(得分:0)

public function upddata($data) {

             $idNum = $data['idNum'];

             $offers_data = array("phneNum" => $data['phneNum']);

             unset($data['idNum']); // unset unnecessary values 
             $this->db->where('idNum', $idNum)->update('offers' ,$offers_data );
             return true;
}