uint64_t
mysql_affected_rows(MYSQL *mysql)
mysql_affected_rows()
可以在使用
mysql_real_query()
or
执行语句后立即调用mysql_query()
。它返回最后一个语句更改、删除或插入的行数(如果它是UPDATE
、
DELETE
或
INSERT
)。对于
SELECT
语句,
mysql_affected_rows()
就像mysql_num_rows()
.
对于UPDATE
语句,默认情况下受影响的行值是实际更改的行数。如果
在连接到mysqldCLIENT_FOUND_ROWS
时将标志
指定为,则受影响的行值是“找到”的行数;也就是说,由子句匹配。
mysql_real_connect()
WHERE
对于REPLACE
语句,如果新行替换旧行,则 affected-rows 值为 2,因为在这种情况下,删除重复行后插入一行。
对于
INSERT
... ON DUPLICATE KEY UPDATE
语句,如果该行作为新行插入,则每行的受影响行值为 1,如果更新现有行,则为 2,如果现有行设置为其当前值,则为 0。如果您指定
CLIENT_FOUND_ROWS
标志,并且现有行设置为其当前值,则受影响的行值为 1(而不是 0)。
在CALL
存储过程的语句之后,
mysql_affected_rows()
返回它将为过程中执行的最后一条语句返回的值,或者0
如果该语句将返回-1
。在该过程中,您可以
ROW_COUNT()
在 SQL 级别使用它来获取各个语句的 affected-rows 值。
mysql_affected_rows()
为范围广泛的语句返回一个有意义的值。详见
信息函数ROW_COUNT()
中
的说明。
大于零的整数表示受影响或检索的行数。零表示没有为UPDATE
语句更新记录,没有行与WHERE
查询中的子句匹配,或者尚未执行任何查询。-1 表示查询返回错误,或者对于
SELECT
查询,
mysql_affected_rows()
在调用
mysql_store_result()
.
因为mysql_affected_rows()
返回一个无符号值,所以您可以通过将返回值与(uint64_t)-1
(或与
(uint64_t)~0
,这是等效的)进行比较来检查是否为 -1。