Spec-Zone .ru
спецификации, руководства, описания, API

21.8.7.1. mysql_affected_rows()

my_ulonglong mysql_affected_rows(MYSQL *mysql)

Описание

mysql_affected_rows() может быть сразу вызван после выполнения оператора с mysql_query() или mysql_real_query(). Это возвращает число строк, измененных, удаленных, или вставленный последним оператором, если это было UPDATE, DELETE, или INSERT. Для SELECT операторы, mysql_affected_rows() работы как mysql_num_rows().

Для UPDATE операторы, значение влиявших строк по умолчанию является числом строк, фактически измененных. Если Вы определяете CLIENT_FOUND_ROWS флаг к mysql_real_connect() соединяясь с mysqld, значение влиявших строк является числом "найденных" строк; то есть, соответствующий WHERE пункт.

Для REPLACE операторы, значение влиявших строк 2, если новая строка, замененная старая строка, потому что в этом случае, одна строка была вставлена после того, как копия была удалена.

Для INSERT ... ON DUPLICATE KEY UPDATE операторы, значение влиявших строк на строку 1, если строка вставляется как новая строка, 2, если существующая строка обновляется, и 0, если существующая строка устанавливается в ее текущую стоимость. Если Вы определяете CLIENT_FOUND_ROWS флаг, значение влиявших строк 1 (не 0), если существующая строка устанавливается в ее текущую стоимость.

После a CALL оператор для хранимой процедуры, mysql_affected_rows() возвращает значение, которое это возвратило бы для последнего оператора, выполняемого в пределах процедуры, или 0 если тот оператор возвратился бы -1. В пределах процедуры можно использовать ROW_COUNT() на уровне SQL, чтобы получить значение влиявших строк для отдельных операторов.

В MySQL 5.7, mysql_affected_rows() возвращает значимое значение для более широкого диапазона операторов. Для получения дополнительной информации см. описание для ROW_COUNT() в Разделе 12.14, "информационные Функции".

Возвращаемые значения

Целое число, больше чем нуль, указывает на число строк, на которые влияют или полученный. Нуль указывает, что никакие записи не были обновлены для UPDATE оператор, никакие строки, соответствующие WHERE пункт в запросе или что никакой запрос еще не был выполнен.-1 указывает что запрос, возвращенный ошибка или что, для a SELECT запрос, mysql_affected_rows() был вызван до вызова mysql_store_result().

Поскольку mysql_affected_rows() возвращает значение без знака, можно проверить на-1, сравнивая возвращаемое значение с (my_ulonglong)-1 (или к (my_ulonglong)~0, который эквивалентен).

Ошибки

Ни один.

Пример

char *stmt = "UPDATE products SET cost=cost*1.25              WHERE group=10";mysql_query(&mysql,stmt);printf("%ld products updated",(long) mysql_affected_rows(&mysql));