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

2022-08-30 16:56:58

我已经显示了带有记录和“删除”图像的表格。在删除图像时单击我正在使用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"));

答案 1

如果删除操作成功,db->delete() 将返回 。仅当无法删除该行时,它才会返回。我认为你应该检查这样的东西:TRUEFALSE

$this->db->affected_rows();

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


答案 2

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

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

已删除:“”,1

未删除: '', 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';
}

推荐