Я отобразил таблицу с записью и «Удалить» изображение. при удалении нажмите клик. Я удаляю запись с помощью ajax. предположим, есть три записи с идентификатором 40,41,42, если я удалю запись с ID = 40, responce возвращает «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"));
Db-> delete () возвращает TRUE
, если операция удаления выполнена успешно. Он только вернет FALSE
если он НЕ МОЖЕТ удалить строку. Я думаю, вы должны проверить что-то вроде:
$this->db->affected_rows();
который возвращает число, а не логическое значение, которое вы можете проверить с помощью условий If.
когда мы удаляем из 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 // строка с id не найдена, но 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'; }
Примечание. Этот ответ относится к старой версии. В текущей версии delete () возвращает логическое значение.
Почему вы думаете, что delete()
возвращает логическое значение? Это объект!
var_dump()
сказал бы вам об этом. Он также расскажет вам, что это за объект.
См. Исходный код: https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/DB_active_rec.php#L1716