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를 사용하여 암시적으로 영향을 받는 행을 계산하지 않습니다.


기타