Как я могу сказать, когда ОБНОВЛЕНИЕ MySQL было успешным против фактически обновленных данных? - PullRequest
32 голосов
/ 10 сентября 2011

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

Пример:

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

Ответы [ 2 ]

43 голосов
/ 10 сентября 2011

Посмотрите на mysql_acted_rows ()

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

php.net говорит:

mysql_affected_rows ()

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

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

if($this->db->affected_rows() >= 0){ }
13 голосов
/ 10 сентября 2011

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...