0

我有一个表名“类别”,其中包含(cat_id、名称、描述)。我可以毫无问题地插入、检索和删除。但是当我更新我的类别时,我的数据库中没有插入任何数据。我检查了我的桌子,结果什么也没有。

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>

请任何人告诉我我的代码有什么问题?预先感谢

此致。

*注意:我将“数据库”放在自动加载配置中。

4

4 回答 4

0

看起来您的查询可能没有得到,cat_id因为我在传递视图中的任何地方都看不到它。在 HTML 中尝试一个隐藏字段,其中包含cat_id. 这也可能比尝试通过 URI 段获取它更容易。

于 2013-11-03T19:06:37.877 回答
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);

然后,如果您在该查询中看不到任何问题,请将其提供给我们。

于 2013-11-03T13:38:31.473 回答
0

您可以了解 CI 模型,它将简化您的生活。我相信,由于某种原因,重定向可能会在提交之前关闭您的连接......如果您使用模型对象,它就不会发生。

于 2013-11-04T12:28:32.237 回答
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();

在此之后,继续您的正常代码。

于 2013-11-04T20:11:40.260 回答