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 -->
?>
答案 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;
}