Как узнать, когда MySQL UPDATE был успешным по сравнению с фактически обновленными данными?
Пример:
TABLE id city_name 1 Union 2 Marthasville
Если я запустил следующее:
$data = array('city_name', 'Marthasville'); //update record 2 from Marthasville to the same thing, Marthasville. $this->db->where('id', 2); $this->db->update('table', $data); if($this->db->affected_rows() > 0) { //I need it to return TRUE when the MySQL was successful even if nothing was actually updated. return TRUE; }else{ return FALSE; }
Это вернет TRUE
каждый раз, когда оператор UPDATE будет успешным, но FALSE, если никакие строки не были фактически обновлены.
Мне нужно, чтобы он возвращал TRUE
каждый раз, когда оператор UPDATE был успешно выполнен, даже если он фактически не меняет никаких записей.
Посмотрите на mysql_affected_rows ()
Он должен сказать вам, что что-то действительно обновлено, а ничего не было успешно обновлено, что привело к возврату истины.
php.net говорит:
mysql_affected_rows ()
Возвращает количество успешных удаленных строк и -1, если последний запрос не удался.
Для достижения желаемых результатов вы можете использовать следующее:
if($this->db->affected_rows() >= 0){ }
Затем вы будете использовать mysql_query :
Операторы SQL, INSERT, UPDATE, DELETE, DROP и т. Д., Mysql_query () возвращает TRUE при успешном завершении или FALSE при ошибке.
Простой:
$result = $this->db->update('table', $data); if($result) { //without error even no row updated } else { }