【问题标题】:Codeigniter Update query issueCodeigniter 更新查询问题
【发布时间】:2015-07-15 05:47:02
【问题描述】:

我正在做一个学生管理系统,我想更新记录,所有代码都可以正常工作,但更新操作也没有完成,所有选择元素,如下拉菜单,单选按钮都没有检查为数据库中的数据。

控制器代码:

//code to edit student record.
public function edit($stu_id){
$this->load->model('model_editstudent');
$data['r']=$this->model_editstudent ->get_student_row($stu_id);
$this->load->view('view_editstudent', $data);
}

#update query.
function update(){
    $stu_id=$this->input->post('stu_id');
    $data=array(
        'name'=>$this->input->post('name'),
        'address'=>$this->input->post('address'),
        'sex'=>$this->input->post('sex'),
        'yop'=>$this->input->post('yop'),
        'interest'=>$this->input->post('interest'));
    $this->db->where('stu_id',$stu_id);
    $this->db->update('stu_record',$data);
    redirect('Student_Controller/');
}

模型代码:

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

    class Model_EditStudent extends CI_Model{

    function get_student_row($stu_id){
    $this->db->where('stu_id',$stu_id);
    $query=$this->db->get('stu_record');
    #will return only one record(row)
    return $query->row();
    }
}

查看代码:

    <form method="POST" action='<?php echo site_url("student_controller/update"); ?>'>
<b>Student ID:</b><br>
<input type="text" Name="name" readonly value="<?php echo $r->stu_id ?>"><br><br>
<b>Name of the Student:</b><br>
<input type="text" Name="name" value="<?php echo $r->name ?>"><br><br>
<b>Address:</b><br>
<textarea name="address" rows="5" cols="22" ><?php echo $r->address ?></textarea><br><br>
<b>Gender:</b><br>
<input type="radio" name="sex" value="<?php if($r->sex=='Male') ?>">Male<br>
<input type="radio" name="sex" value="<?php if($r->sex=='Female') ?>">Female<br><br>
<b>Expected Year of Passing:</b><br>
<select name="yop" value="<?php echo $r->yop ?>">
<option value="0">Select Year</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
</select><br><br>
<b>Extra Curricular Interests:</b><br>
<input type="checkbox" name="interest" value="Sports"><label>Sports</label><br/>
<input type="checkbox" name="interest" value="Programming"><label>Programming</label><br/>
<input type="checkbox" name="interest" value="Arts"><label>Arts</label><br/>
<input type="checkbox" name="interest" value="Music"><label>Music</label><br/>
<br><input type="submit" value="Update"> &nbsp 
<a href='<?php echo site_url('student_controller/'); ?>'>Cancel</a>
</form>

【问题讨论】:

  • 更新时遇到什么错误?

标签: php database codeigniter sql-update


【解决方案1】:

你选择的第一件事改变

<select name="yop">
<option value="0">Select Year</option>
<option value="2010" <?php if($r->yop=="2010"){echo "selected=selected";}?>>2010</option>
<option value="2011" <?php if($r->yop=="2011"){echo "selected=selected";}?>>2011</option>
<option value="2012" <?php if($r->yop=="2012"){echo "selected=selected";}?>>2012</option>
<option value="2013" <?php if($r->yop=="2013"){echo "selected=selected";}?>>2013</option>
<option value="2014" <?php if($r->yop=="2014"){echo "selected=selected";}?>>2014</option>
<option value="2015" <?php if($r->yop=="2015"){echo "selected=selected";}?>>2015</option>
</select>

单选按钮

<input type="radio" name="sex" value="Male" <?php if($r->sex=='Male') echo "checked";?>">Male<br>
<input type="radio" name="sex" value="Female" <?php if($r->sex=='Female') echo "checked"; ?>">Female<br><br>

【讨论】:

  • 感谢您的回复,数据以 html 形式解析,但我无法更新数据库,您能告诉我代码中是否有任何错误。查询已成功执行,但数据库中没有反映任何更改?
  • 你可以在控制器中检查 $_POST 为print_r($_POST);exit;
  • &lt;input type="text" Name="name" readonly value="&lt;?php echo $r-&gt;stu_id ?&gt;"&gt;将名字改成stu_id
【解决方案2】:

关于你的单选按钮,你的 if 到底在哪里?您测试性别是男性还是女性,但之后没有任何反应。

if($r->sex=='Male')

另外,我不记得大写是否重要,但您使用了一次“student_controller”和一次“Student_Controller”。您收到任何错误消息吗?你加载数据库了吗...(只是问一下,因为我们没有所有的代码,我只是假设最坏的情况)。您应该尝试知道表单发送后是否到达更新功能。你的更新函数中的一个愚蠢的回声可能会按照我所说的那样做......

我建议您也使用“form_validation”库,以检查来自您的帖子数据的数据并对其进行清理。

类似:

$this->load->library('form_validation');

$this->form_validation->set_rules('name', '"Name of the Student"', 'trim|required|min_length[3]|max_length[22]|alpha_dash|encode_php_tags|xss_clean');
// And you need to apply set_rules to each of your post data, like 'adress', 'sex', etc.

if($this->form_validation->run()):
  // Here goes your code, with the update query
endif;
redirect('Student_Controller/');

我不知道它是否对你有帮助,但我希望如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多