php 使用 codeigniter 更新数据库中的记录

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18985135/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 18:36:59  来源:igfitidea点击:

Update record in database using codeigniter

phpmysqlcodeigniter

提问by Zidane

Hi there Iam using codeIgniter and I have managed to simply post a id number and phone number into the a table named "offers" both fields are INT, however when i try update a phone number corresponding to a specific id I see no changes in the database. I have listed my controller , model and view below

嗨,我正在使用 codeIgniter,我设法简单地将 ID 号码和电话号码发布到名为“offers”的表中,这两个字段都是 INT,但是当我尝试更新与特定 ID 对应的电话号码时,我看不到数据库。我在下面列出了我的控制器、模型和视图

newOffer controller

新报价控制器

   <?php 
    if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  //insert data into db using offer_model model
  // other option update submit 
  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("check2");
           $this->load->model("offer_model");
           if ($this->input->post('mysubmit')) {
                $this->offer_model->upddata();
            }
         }
    }
  ?>

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) {
    $this->db->where('idNum', $idNum);
    $this->db->update('data' ,$data);
    //extract($data); 
  //$data['OfferName']
  //$this->db->where('OfferName' ,  $data['OfferName']); 
    //$this->db->update($Offers, array('OfferName' => $OfferName)); 
   return true;
    }
}
 ?>

The view to update the values

更新值的视图

<?form _open(base_url()."index.php/newOffer/updateOffer")?>
<div class="form">
 // <?php echo form_open('newOffer/addOffer'); ?>
<legend>Please enter details for your new offer</legend>
<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 -->
   ?>

回答by allen213

You aren't passing any data to your model here

您没有在此处将任何数据传递给您的模型

$this->offer_model->upddata();

You need to add something like

你需要添加类似的东西

$this->offer_model->upddata($this->input->post());

Also in your Model code $idNumis undefined you will need to provide that too.

同样在您的模型代码$idNum中未定义,您也需要提供它。

e.g:

例如:

public function upddata($data) {
  $idNum = $data['idNum'];
  unset($data['idNum']);
  $this->db->where('idNum', $idNum);
  $this->db->update('offers' ,$data);
  return true;
}
//etc

回答by Kamlesh Suthar

Make sure you are feting from the same table in which you are inserting or updating data.

确保您从插入或更新数据的同一个表中获取数据。

public function upload($id_akun, $data)
    {
        $table = "foto";

        $this->db->where("id_akun", $data['id_akun']);
        $count = $this->db->count_all_results($table);


        if ($count < 1) {
            $this->db->insert($table, $data);
        } else {
            $this->db->where('id_akun', $data['id_akun']);
            $this->db->update($table, $data);
        }
    }

Good luck :)

祝你好运 :)

回答by Niklesh_Chauhan

Use construct for load your model in controller And always pass the post data to the model function then only you will find the form post data into model function.

使用构造在控制器中加载您的模型并且始终将发布数据传递给模型函数,然后只有您才能找到表单发布数据到模型函数中。

<?php 
  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

  function __construct()
  {
        parent::__construct();
        $this->load->model("offer_model");
  }

  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')) {
             $CI_Post = $$this->input->post();
             $this->offer_model->entry_insert($CI_Post);
          }
       }

        function updateOffer (){
           $this->load->view("check2");

           if ($this->input->post('mysubmit')) {
              $CI_Post = $$this->input->post();
              $this->offer_model->upddata($CI_Post);
           }
         }
    }
?>

Here is model which getting form post data in array.

这是在数组中获取表单发布数据的模型。

<?php
class offer_model extends CI_Model{

     public function entry_insert($param=""){
          $data = array(
               'idNum' => $param['idNum'],
                'phneNum' => $param['phneNum'],

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

     public function upddata($param="") {
      $data = array(
             'idNum' => $param['idNum'],
              'phneNum' => $param['phneNum'],

      );
      $this->db->where('idNum', $idNum);
      $this->db->update('data' ,$data);
      return $this->db->affected_rows();
     }
}
?>

回答by ABorty

in your model do something like

在你的模型中做类似的事情

public function upddata() {
    $data=array();
    $data=$this->input->post(); //get all post value to data array
    $idNum=$data['idNum'];
    unset($data['idNum']); // unset unnecessary values 
    $this->db->where('idNum', $idNum)->update('offers' ,$data);
    return true;
} 

this is the procedure.If you have 100 input fields then its not possible to add every value to an array. Please let me know if you face any problem.

这是过程。如果您有 100 个输入字段,则不可能将每个值都添加到数组中。如果您遇到任何问题,请告诉我。

update

更新

change

改变

<?php echo form_open('newOffer/addOffer'); ?>

to

<?php echo form_open('newOffer/updateOffer'); ?>

in The view to update the values

在视图中更新值