Php 我的更新查询没有';不要在编码点火器上工作

Php 我的更新查询没有';不要在编码点火器上工作,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个表名“Category”,其中包含(cat_id、name、description)。我可以毫无问题地插入、检索和删除。但是当我更新我的分类时,没有数据插入到我的数据库中。我检查了一下我的桌子,结果什么都没有 后模型“类别模型扩展CI模型”: 后控制器“类别扩展CI_控制器”: 这是我的编辑类别视图: <form action="<?php echo base_url(); ?>category/update_category" method="POST">

我有一个表名“Category”,其中包含(cat_id、name、description)。我可以毫无问题地插入、检索和删除。但是当我更新我的分类时,没有数据插入到我的数据库中。我检查了一下我的桌子,结果什么都没有

后模型“类别模型扩展CI模型”:

后控制器“类别扩展CI_控制器”:

这是我的编辑类别视图:

<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>

首先,您确定正确写入了表名吗

..."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);

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

您的查询可能没有获得
cat\u id
,因为我在通过视图中的任何位置都没有看到它。尝试HTML中包含
cat\u id
的隐藏字段。这也可能比通过URI段获取更容易。

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

模型的小样本

在应用程序/模型上创建一个类,如下所示

文件“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();

在此之后,继续编写普通代码。

嗨,班迪丹,我在数据库“category”中正确地编写了代码。我只是打错了。我在上面更新了我的代码。我按照你的技巧,将代码“error_log('my query:'。print_r('query,true));”(没有双引号),结果是我什么都没看到为什么你希望
$this->db->where('cat_id',$id))$此->数据库->更新('category')要工作吗?我遵循CI活动记录查询。你能告诉我怎么办吗?你缺了
set
部分。尝试:
$this->db->update('category',array('cat_name'=>$name,等等),array('cat_id'=>$id))
或只是将第二部分更改为
$this->db->update('category',$setarray)请参见。我使用此自定义查询
$this->post_model->custom_查询(“更新类别集cat_name=”””、“$name.”、description=”、“$desc.”其中cat_id=”、“$id.”)。我认为目标类似于CI用户指南是的,是的,这对于原始查询来说似乎很好(有所有的安全问题)。。。我刚才提到的是您注释掉的部分。您好,我在form open下面添加了这样的隐藏元素“”,在fieldset之前,它仍然不起作用。当您加载带有类别数据的表单时,您是否使用
cat\u id
属性填充
值($cats->result()作为$cat)
尝试删除
其中cat_id=“$id.””中的引号;
因为这是输出
其中cat_id='3'
(一个字符串),而不是其中cat_id=3`(一个整数)。从可读性/可扩展性的角度来看,最好使用Active Record在模型内部生成查询,并为您要进行的每种类型的调用提供单独的函数。是的,我会的。但在这种情况下,我需要有人提供指导。如果您有任何建议或链接,欢迎使用。:-)请开始测试我的示例。。.我学会了扩展我发现的一些样本。
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();