我有一个表名“Category”,其中包含(cat_id,name,description)。我可以毫无问题地插入,检索和删除。但是当我更新我的类别时,我的数据库中没有插入数据。我检查了我的桌子,结果一无所获。
POST模型“Category_Model扩展CI_Model”:
public function custom_query($data)
{
$q = $this->db->query($data);
return $q;
}
POST控制器“类别扩展CI_Controller”:
public function edit_category()
{
$data['title'] = "Edit Category Page";
$this->load->view('edit_category', $data);
}
public function update_category()
{
$id = $this->input->post('cat_id'); // I try $id = $this->uri->segment(3); but no result
$name = $this->input->post('name');
$desc = $this->input->post('description');
$this->post_model->custom_query("update category set cat_name='".$name."', description='".$desc."' where cat_id='".$id."'"); // when I delete 'where cat_id='".$id."'' clause, all my records were changing/updating
// I change to $this->db->where('cat_id', $id); $this->db->update('category'), but no result.
redirect ('category/view_categories');
}
这是我的编辑类别视图:
<form action="<?php echo base_url(); ?>category/update_category" method="POST">
<fieldset>
<legend>Edit Category</legend>
<label for="cat">Name :</label>
<input type="text" name="name"/>
<label for="desc">Descriptions :</label>
<textarea name="description" cols="40" rows="2"></textarea>
<input type="submit" value="Update">
</fieldset>
</form>
请有人告诉我我的代码有什么问题吗?提前谢谢
最好的问候。*注意:我将'database'放在autoload config中。
答案 0 :(得分:0)
首先,你确定你正确地写了表名吗?
..."update kategori..."
如果可以,请在将查询发送到数据库之前输出查询,如下所示:
$query = "update kategori set cat_name='".$name."', description='".$desc."' where cat_id='".$id."'";
error_log('My query: ' . print_r($query, true));
$this->post_model->custom_query($query);
然后,如果您在该查询中看不到任何问题,请将其提交给我们。
答案 1 :(得分:0)
看起来你的查询可能没有获得cat_id
,因为我在传递视图中没有看到它。尝试HTML中包含cat_id
的隐藏字段。这可能比通过URI段获取它更容易。
答案 2 :(得分:0)
您可以了解CI模型,它将简化您的生活。 我相信,由于某种原因,重定向可能会在提交之前关闭您的连接...如果您使用模型对象,则不会发生。
答案 3 :(得分:0)
模特的一个小样本......
在应用程序/模型上创建一个类,如此
文件“category_model.php”...注意此名称,因为CI对模型名称的限制非常严格。必须由相同的类名,但都是小写的。
class Category_model extends CI_Model {
// your fields
var $id = null;
var $name = null;
// call parent constructor... it's essential
function __construct() {
parent::__construct();
}
// create a set function, for fill all fields directly from get or post
function set($data) {
$this->id = isset($data['id']) ? $data['id'] : null;
$this->name = isset($data['name']) ? $data['name'] : null;
}
// execute update on database
function update($id) {
$this->db->update('category', $this, array('id' => $this->id));
}
}
在控制器上,实例并调用模型
$this->load->model('Category_Model', null, true);
$this->Category_Model->set($this->post());
$this->Category_Model->update();
之后,继续正常的代码。