update : 2015.11.03
php.shukuma.com

검색:
 
 
최근 MySQL 작업으로 변경된 행 개수를 얻음

mysql_affected_rows

(PHP 4, PHP 5)

mysql_affected_rows최근 MySQL 작업으로 변경된 행 개수를 얻음

설명

int mysql_affected_rows ([ resource $link_identifier ] )

link_identifier에 마지막 INSERT, UPDATE, REPLACE, DELETE 질의로 영향받은 행 수를 얻습니다.

인수

link_identifier

MySQL 연결. 지정하지 않으면 mysql_connect()로 연 마지막 연결을 사용합니다. 연결이 없으면, 인수 없이 mysql_connect()를 호출하여 연결을 만듭니다. 연결이 성립되지 않으면 E_WARNING 등급의 오류를 생성합니다.

반환값

최근 질의가 실패했을 경우 -1을 반환하고, 그렇지 않을 경우 적용된 행의 개수를 반환한다.

최근 질의가 WHERE 절이 없는 DELETE 질의일 경우 테이블의 모든 레코드가 삭제되지만, 4.1.2 버전 이후의 MySQL은 0을 반환한다.

UPDATE를 사용할 때, MySQL은 기존 값과 새로운 값이 동일한 컬럼들은 변경하지 않을 것이다. mysql_affected_rows()는 조건에 해당하는 행의 개수가 아닌 실제 변경된 행의 개수를 제공한다.

REPLACE 구문은 동일한 기본키의 레코드를 먼저 삭제한 다음 새 레코드를 삽입한다. 결국, 이 함수는 삽입된 레코드수와 삭제된 레코드수를 더한 값을 반환한다.

예제

Example #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

Example #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

주의

Note: 트랜젝션 사용

트랜젝션을 사용한다면 mysql_affected_rows()는 COMMIT 명령 이후가 아니라 INSERT, UPDATE, DELETE 명령 직후에 호출해야 한다.

Note: SELECT 구문

SELECT에 의해 반환된 행의 수를 얻기 위해서는 mysql_num_rows()를 사용하면 된다.

참고