Spec-Zone .ru
спецификации, руководства, описания, API
|
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));