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.