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

www*_*.me 23 php ajax json codeigniter

我已经显示了包含记录和"删除"图像的表格.在删除图像上单击我将使用ajax删除记录.如果我删除ID = 40的记录,则有三条记录,其中ID为40,41,42,响应返回"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"));
Run Code Online (Sandbox Code Playgroud)

Sud*_*oti 48

DB->删除()返回TRUE,如果删除操作是成功的.它只会返回,FALSE如果它不能删除该行.我想你应该检查一下:

$this->db->affected_rows();
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

因此,在数据库查询后,我们得到1和2,如:

删除:“”,1

NOT DELETED:'',0 //找不到ID为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';
}
Run Code Online (Sandbox Code Playgroud)