sql update codeigniter

时间:2012-07-18 14:31:54

标签: sql codeigniter activerecord sql-update

我正在使用codeIgniter .. 我希望在is_close的{​​{1}}时更新表格列id=$ticket_id 我这样做: -

table= tbl_tickets.

我也这样做了: -

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

两者都不起作用,即我的表没有将值更新为1,并且broswer中也没有显示错误。 :(

已编辑:包含我的模型部分:

$sql = "UPDATE tbl_tickets SET is_close={1} WHERE id='$title_id'";
$this->db->query($sql);

我的控制器: -

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);
     }

6 个答案:

答案 0 :(得分:0)

首先,在传递之前检查$title_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);
}

然后,给你的表结构。

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

试试这个

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

答案 3 :(得分:0)

首先使用get方法检查ticket_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 .
}

答案 4 :(得分:0)

要处理此类错误,我的意思是如果数据库中未发生反射,请使用以下步骤解决此类错误。

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

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

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

我希望它能起作用。

谢谢

答案 5 :(得分:0)

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

赞这个 $ data = array('is_close'=>'1');