sql更新代码点火器
我正在使用codeIgniter。。 当我的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); 我也这样做了:- $
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和数千名未来研究人员。记住,这从来不是一对一的交互——因为旧页面被用来关闭新页面,所以这个答案在帮助用户解决类似问题时也是不可或缺的。