sql更新代码点火器

sql更新代码点火器,sql,codeigniter,activerecord,sql-update,Sql,Codeigniter,Activerecord,Sql Update,我正在使用codeIgniter。。 当我的table=tbl\u票证的id=$ticket\u id时,我想更新表列is\u close。 我正在这样做:- $data=array( 'is_close'=>1 ); $this->db->where('id',$title_id); $this->db->update('tbl_tickets',$data); 我也这样做了:- $

我正在使用codeIgniter。。 当我的
table=tbl\u票证的
id=$ticket\u id
时,我想更新表列
is\u close
我正在这样做:-

$data=array(
            'is_close'=>1
            );
        $this->db->where('id',$title_id);
        $this->db->update('tbl_tickets',$data);
我也这样做了:-

$sql = "UPDATE tbl_tickets SET is_close={1} WHERE id='$title_id'";
$this->db->query($sql);
两者都不起作用,即我的表没有将值更新为1,而且broswer中也没有显示任何错误(

编辑:包括我的模型零件:

function setClosePost($title_id){
        $sql = "UPDATE tbl_tickets SET is_close=0 WHERE id='$title_id'";
        $this->db->query($sql);
        // $data=array(
        //     'is_close'=>1
        //     );
        // $this->db->where('id',$title_id);
        // $this->db->update('tbl_tickets',$data);
     }
我的控制器:-

function closePost(){
        $this->load->model('helpdesk_model');
        $this->helpdesk_model->setClosePost($this->input->post('title_id'));
      }

首先,在通过前检查
$title\u id

var_dump($title_id);
然后,在更新之前和之后尝试执行“选择具有此id的行”

$query = $this->db->get_where('tbl_tickets', array('id' => $id));  

foreach ($query->result() as $row)
{
    var_dump($row->is_close);
}

$data=array(
            'is_close'=>1
            );
        $this->db->where('id',$title_id);
        $this->db->update('tbl_tickets',$data);

$query = $this->db->get_where('tbl_tickets', array('id' => $id));

foreach ($query->result() as $row)
{
    var_dump($row->is_close);
}
然后,给出您的表结构。

就这样试试吧

$sql = "UPDATE tbl_tickets SET is_close='1' WHERE id=".$title_id;
$this->db->query($sql);
就这样试试吧

**function edit($close,$id) {
$sql = "UPDATE tbl_tickets SET is_close= ?  WHERE id = ? ";
 $this->db->query($sql, array($close,$id));
}**

首先,使用get方法检查
ticket\u id
是否存在

另一件事是在模型中的函数中始终使用return,这样您就可以通过
if(function_name){…}else{…}

然后,如果get方法返回的数据正确,请重试

模型方法

public function set_closed($ticket_id){
    $this-db->set(array(
            'is_close'=>1
            ));
    $this->db->where('id',$ticket_id);
    $this->db->update('tbl_tickets');
    return true;
}
然后在控制器中检查

if($this->Ticket_model->set_closed($ticket_id) == true){
    echo 'ticket set to closed correctly';
}else{
    echo 'there is some error on updating database'.$this->db->error(); // to checkout db error .
}
若要处理此类错误,我的意思是,若数据库中未发生反射,则使用以下步骤解决此类错误。

1) 使用$this->db->last_query()函数打印查询,使用此函数我们可以确保变量的值正确(不应为null或未定义),使用此函数我们可以确保SQL查询是否有效

2) 如果SQL查询有效,则打开phpmyadmin并将相同的查询激发到phpmyadmin中,如果查询列或表名无效,则返回错误

使用这种方式,这是交叉检查SQL查询问题的最佳方式。

我希望它能起作用


谢谢

您正在尝试更新整型(INT)类型的值,只需交叉检查您的列数据类型,如果它是varchar,则必须将值放在单引号或双引号中

像这样
$data=array('is_close'=>'1')

您是否尝试过在CodeIgniter的上下文之外运行查询?您确定
$title\u id
包含您期望的值吗?@Colin Yup我正在获取$title\u id作为我的模型函数的参数。使用
echo$this->db->last\u query()
以打印查询。然后尝试在数据库上手动运行它,例如通过phpMyAdmin。@avinasse使用这个{return$this->db->update('tbl_tickets',$data);}使代码在一个编号列表中工作,在它前面加8个空格,而不是4个空格。这很奇怪。使用var_dump(),
字符串“”(长度=0)
“试试这个”答案在Stackoverflow上的值很低。即使解决方案对您来说似乎是基本的/直观的/自解释的,也会有不熟悉该技术/语法的研究人员。每个答案都应该包含一个解释,旨在教育/授权OP和数千名未来研究人员。请记住,这绝不是一对一的交互——因为旧页面用于关闭新页面,所以这个答案也可以帮助用户解决类似问题。“试试这个”答案在Stackoverflow上的价值很低。即使解决方案对您来说似乎是基本的/直观的/自解释的,也会有不熟悉该技术/语法的研究人员。每个答案都应该包含一个解释,旨在教育/授权OP和数千名未来研究人员。记住,这从来不是一对一的交互——因为旧页面被用来关闭新页面,所以这个答案在帮助用户解决类似问题时也是不可或缺的。