我的更新查询无法在Codeigniter上运行

时间:2013-11-03 13:01:29

标签: php mysql codeigniter

我有一个表名“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中。

4 个答案:

答案 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();

之后,继续正常的代码。