web-dev-qa-db-ja.com

codeigniter db-> delete()は常にtrueを返しますか?

レコードと「削除」画像を含むテーブルを表示しました。画像の削除時に、ajaxを使用してレコードを削除します。 IDが40のレコードを削除すると、IDが40、41、42のレコードが3つあるとします。IDが40のレコードを削除すると、応答が「1」を返し、レコードが削除されます。

codeigniters db-> delete()メソッドは常に "1"を返しますか?レコードが存在するかどうかを手動で確認してから、削除に進む必要がありますか?以下は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"));
24

db-> delete()は、削除操作が成功した場合、TRUEを返します。行を削除できない場合にのみFALSEを返します。私はあなたが次のようなものをチェックする必要があると思います:

$this->db->affected_rows();

これはブール値ではなく数値を返すため、If条件で確認できます。

52

$this->db->delete()を使用してcodeigniter 2.2.0でデータベースから削除する場合、2つのフラグを使用して操作できます: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';
}
5
ishubin