Подтвердить что ты не робот

Codeigniter db-> delete() всегда возвращает true?

Я отобразил таблицу с записью и "Удалить" изображение. при удалении нажмите клик. Я удаляю запись с помощью ajax. предположим, есть три записи с идентификатором 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"));
4b9b3361

Ответ 1

db- > delete() возвращает TRUE, если операция удаления выполнена успешно. Он возвратит только FALSE, если COULDNT удалит строку. Я думаю, вы должны проверить что-то вроде:

$this->db->affected_rows();

который возвращает число, а не логическое значение, которое вы можете проверить с помощью условий If.

Ответ 2

когда мы удаляем из db в codeigniter 2.2.0 используя $this->db->delete(), мы можем работать с двумя флагами: 1. $this->db->_error_message() а также 2. $this->db->affected_rows()

Итак, после запроса db мы получаем 1 и 2, как:

DELETED: '', 1

NOT DELETED: '', 0//строка с идентификатором не найдена, но sql завершен ok

SQL ERROR: строка, -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';
}

Ответ 3

Примечание. Этот ответ относится к старой версии. В текущей версии delete() возвращает логическое значение.

Почему, по-вашему, delete() возвращает логическое значение? Это объект!

var_dump() сказал бы вам об этом. Он также расскажет вам, что это за объект.

См. исходный код: https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/DB_active_rec.php#L1716