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

Как узнать, когда MySQL UPDATE был успешным по сравнению с фактически обновленными данными?

Как я могу узнать, когда 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 был успешно выполнен, даже если он фактически не изменил записи.

4b9b3361

Ответ 1

Посмотрите mysql_affected_rows()

Он должен сказать вам, что что-то действительно обновлено, а ничего не было успешно обновлено, что привело к возврату истины.

php.net говорит:

mysql_affected_rows()

Возвращает количество успешных удаленных строк и -1, если последний запрос не выполнен.

Для достижения желаемых результатов вы можете использовать следующее:

if($this->db->affected_rows() >= 0){ }

Ответ 2

Затем вы будете использовать 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 {

}