23.8.7.1 mysql_affected_rows()
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
문의 경우, 기본적으로 영향을받은 행의 값은 실제로 변경된 행의 수입니다. mysqld에 연결할 때 CLIENT_FOUND_ROWS
플래그를 mysql_real_connect()
에 지정된 경우, 영향을받은 행의 값은 '발견', 즉 WHERE
절에 일치하는 행의 수입니다.
REPLACE
문에 영향을받은 행의 값은 새로운 행이 이전 행으로 바뀐 경우 2입니다. 이 경우 중복이 제거 된 후에 행이 삽입 된 것입니다.
INSERT ... ON DUPLICATE KEY UPDATE
문의 경우, 각 행의 영향을받은 행의 값은 행이 새로운 행으로 삽입 된 경우는 1 기존의 행이 갱신 된 경우 2 기존의 행이 현재 값에 설정된 경우 0입니다. CLIENT_FOUND_ROWS
플래그를 지정하면 영향을받는 행의 값은 기존 행을 현재 값으로 설정된 경우 (0이 아닌) 1입니다.
저장 프로 시저 CALL
문 다음 mysql_affected_rows()
는 프로 시저에서 마지막으로 실행 된 명령문에 대한 반환 값 또는 그 문이 -1
을 돌려주는 경우는 0
을 돌려줍니다. 프로 시저에서 SQL 레벨에서 ROW_COUNT()
를 사용하여 개별 문의 영향을받은 행의 값을 얻을 수 있습니다.
MySQL 5.6에서는 mysql_affected_rows()
는보다 폭 넓은 문에 유효한 값을 반환합니다. 자세한 내용은 섹션 12.14 "정보 함수" 의 ROW_COUNT()
의 설명을 참조하십시오.
반환 값
제로보다 큰 정수 영향을 받았는지, 취득 된 행의 수를 나타냅니다. 제로는 UPDATE
문에 레코드가 업데이트되지 않았거나 쿼리의 WHERE
절에 일치하는 행이 아니거나 쿼리가 아직 실행되지 않았 음을 나타냅니다. -1은 쿼리가 오류를 반환하거나 SELECT
쿼리의 경우, mysql_store_result()
를 호출하기 전에 mysql_affected_rows()
가 호출되었음을 나타냅니다.
mysql_affected_rows()
는 부호없는 값을 반환하므로 반환 값을 (my_ulonglong)-1
(또는 동등하다 (my_ulonglong)~0
)과 비교하면 -1을 확인할 수 있습니다.
오류
없음.
Example
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));