mysql_affected_rows
(PHP 4, PHP 5)
mysql_affected_rows — 이전 MySQL 작업에서 영향을 받은 행 수 가져오기
경고 이 확장은 PHP 5.5.0에서 더 이상 사용되지 않으며 PHP 7.0.0에서 제거되었습니다. 대신 MySQLi 또는 PDO_MySQL 확장을 사용해야 합니다. MySQL: API 선택 가이드도 참조하세요. 이 함수의 대안은 다음과 같습니다.
설명
mysql_affected_rows(resource $link_identifier
= NULL): int
link_identifier
와 관련된 마지막 INSERT, UPDATE, REPLACE 또는 DELETE 쿼리에 의해 영향을 받는 행 수를 가져옵니다.
매개변수
link_identifier
- MySQL 연결. 링크 식별자가 지정되지 않으면 mysql_connect()에 의해 열린 마지막 링크가 가정됩니다. 그러한 링크가 발견되지 않으면 mysql_connect()가 인수 없이 호출된 것처럼 링크를 생성하려고 시도합니다. 연결을 찾거나 설정하지 않으면
E_WARNING
수준 오류가 생성됩니다.
반환 값
성공하면 영향을 받는 행 수를 반환하고 마지막 쿼리가 실패하면 -1을 반환합니다.
마지막 쿼리가 WHERE 절이 없는 DELETE 쿼리인 경우 모든 레코드가 테이블에서 삭제되지만 이 함수는 MySQL 4.1.2 이전 버전에서 0을 반환합니다.
UPDATE를 사용할 때 MySQL은 새 값이 이전 값과 동일한 열을 업데이트하지 않습니다. 이것은 mysql_affected_rows()가 실제로 일치하는 행의 수와 일치하지 않을 가능성을 생성하고, 단지 쿼리에 의해 문자 그대로 영향을 받은 행의 수와 동일할 수 있습니다.
REPLACE 문은 먼저 동일한 기본 키를 가진 레코드를 삭제한 다음 새 레코드를 삽입합니다. 이 함수는 삭제된 레코드 수에 삽입된 레코드 수를 더한 값을 반환합니다.
"INSERT ... ON DUPLICATE KEY UPDATE" 쿼리의 경우 반환 값은 삽입이 수행된 경우 1, 기존 행 업데이트의 경우 2입니다.
Examples
예제 #1 mysql_affected_rows() 예제
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');
/* this should return the correct numbers of deleted records */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n", mysql_affected_rows());
/* with a where clause that is never true, it should return 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Records deleted: %d\n", mysql_affected_rows());
?>
위의 예는 다음과 유사한 결과를 출력합니다.
Records deleted: 10 Records deleted: 0
예제 #2 트랜잭션을 사용하는 mysql_affected_rows() 예제
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');
/* Update records */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Updated records: %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>
위의 예는 다음과 유사한 결과를 출력합니다.
Updated Records: 10
노트
참고: Transactions
트랜잭션을 사용하는 경우 COMMIT 이후가 아니라 INSERT, UPDATE 또는 DELETE 쿼리 이후에 mysql_affected_rows()를 호출해야 합니다.
참고: SELECT 문
SELECT에 의해 반환된 행 수를 검색하려면 mysql_num_rows()를 사용할 수 있습니다.
참고: Cascaded Foreign Keys
mysql_affected_rows()는 외래 키 제약 조건에서 ON DELETE CASCADE 및/또는 ON UPDATE CASCADE를 사용하여 암시적으로 영향을 받는 행을 계산하지 않습니다.
기타
- mysql_num_rows() - 결과의 행 수 가져오기
- mysql_info() - 가장 최근 쿼리에 대한 정보 가져오기