codeigniter db-> delete()总是返回true?

时间:2012-02-01 09:18:23

标签: php ajax json codeigniter

我显示了包含记录和“删除”图像的表格。在删除图像上单击我将使用ajax删除记录。有三个记录,ID为40,41,42 如果我删除ID = 40的记录,则响应返回“1”并且记录被删除, 下次如果我再次点击删除图片,它会再次返回“1”。

codeigniters db-> delete()方法总是返回“1”? 我是否需要手动检查记录是否存在然后继续删除? 下面是我的代码iin ajax.php

$res = $this->db->delete(tbl_user_groups, array('owner_id' => $admin,'user_group_id'=>$gid)); 

if($res) echo json_encode (array("success"=>"true"));
else     echo json_encode (array("success"=>"false"));

2 个答案:

答案 0 :(得分:47)

如果删除操作成功, db-> delete()将返回TRUE。如果它不能删除该行,它将只返回FALSE。我想你应该检查一下:

$this->db->affected_rows();

返回数字而不是布尔值,您可以使用If条件检查。

答案 1 :(得分:4)

当我们从codeigniter 2.2.0中的db中删除时 使用$this->db->delete()我们可以用两个标志操作: 1. $this->db->_error_message() 和 2. $this->db->affected_rows()

所以在db查询之后我们得到1和2之类的:

删除:'',1

NOT DELETED:'',0 //找不到id的行,但是sql已经完成了

  

SQL错误:字符串,-1

我的选择如下:

$this->db->delete($this->table,array('id'=>$id));
if ($this->db->_error_message()) {
    $result = 'Error! ['.$this->db->_error_message().']';
} else if (!$this->db->affected_rows()) {
    $result = 'Error! ID ['.$id.'] not found';
} else {
    $result = 'Success';
}