Spec-Zone.ru › MySQL Connectors 1.0

5.4.1 mysql_affected_rows()

my_ulonglong
mysql_affected_rows(MYSQL *mysql)

Описание

mysql_affected_rows() можно вызвать сразу после выполнения оператора с помощью mysql_real_query() или mysql_query(). Она возвращает количество строк, изменённых, удалённых или добавленных последним оператором, если это был оператор , , или . Для операторов mysql_affected_rows() работает как mysql_num_rows().

Для операторов значение affected-rows по умолчанию — это количество строк, которые фактически были изменены. Если вы задаёте флаг CLIENT_FOUND_ROWS для mysql_real_connect() при подключении к mysqld, значение affected-rows — это количество строк “найденных”; то есть, соответствующих условию WHERE.

Для операторов значение affected-rows равно 2, если новая строка заменила старую строку, поскольку в этом случае одна строка была вставлена после удаления дубликата.

Для операторов значение affected-rows на строку равно 1, если строка вставлена как новая строка, 2, если существующая строка обновлена, и 0, если существующая строка установлена в свои текущие значения. Если вы задаёте флаг CLIENT_FOUND_ROWS, значение affected-rows равно 1 (а не 0), если существующая строка установлена в свои текущие значения.

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

В MySQL 5.7 mysql_affected_rows() возвращает осмысленное значение для более широкого класса операторов. Подробности см. в описании в .

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

Целое число больше нуля указывает на количество изменённых или полученных строк. Ноль указывает, что для оператора не было обновлений записей, что ни одна строка не удовлетворяет условию WHERE в запросе или что запрос ещё не выполнен. -1 указывает, что запрос вернул ошибку или что для запроса 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));

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/c-api-5.7-en/mysql-affected-rows.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API