codeigniter db-> delete () всегда возвращает true? - PullRequest
21 голосов
/ 01 февраля 2012

у меня отображена таблица с записью и изображением «Удалить».при удалении изображения нажмите, я удаляю запись, используя ajax.Предположим, что есть три записи с идентификатором 40,41,42, если я удаляю запись с ID = 40, ответ возвращает «1», и запись удаляется, в следующий раз, если я снова нажму на «Удалить изображение», она снова вернет «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"));

Ответы [ 2 ]

47 голосов
/ 01 февраля 2012

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

$this->db->affected_rows();

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

5 голосов
/ 01 декабря 2014

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

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

УДАЛЕНО: '', 1

НЕ УДАЛЕНО: '', 0 // строка с идентификатором не найдена, но 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';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...