Spec-Zone.ru › MySQL Connectors 1.0

5.4.1 mysql_affected_rows()

uint64_t
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_affected_rows() возвращает осмысленное значение для широкого диапазона операторов. Подробности см. в описании для в .

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

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

Поскольку mysql_affected_rows() возвращает беззнаковое значение, вы можете проверить на -1, сравнив возвращаемое значение с (uint64_t)-1 (или с (uint64_t)~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-8.0-en/mysql-affected-rows.html

Spec-Zone.ru

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