본문 바로가기
스터디/php

[SQL] 헷갈렸던 mysql_affected_rows(), mysql_num_rows()

by 깝태 2013. 1. 24.


mysql_affected_rows() 함수의 사용은 가장 최근에 업데이트된 행 수를 반환합니다.


주의할건 '가장 최근' 에 업데이트된 행 수 이므로 꼭 값을 넘겨주지 않아도 가장 최근 쿼리문에 의해 영향을 받은 행 수만 가져옵니다.


$변수 = "SELECT COUNT(*) FROM TABLE"; -> 결과가 10

$total = mysql_affected_rows()


SELECT문, UPDATE문, DELETE문에 관계없이 $total 을 출력하면 10 이 출력됩니다.

mysql_num_rows()와 같은 쿼리문과 역할이 확연히 차이가 납니다.


이런 쿼리문의 경우에는 "레코드셋의 행 수"를 조사하기 때문에 가장 최근에 업데이트 한 행 수를 가져오는것과는 다릅니다.

그래서 무조건 "레코드셋"을 함수에 넘겨줘야합니다.


$query = "SELECT COUNT(*) FROM TABLE // 10

$query2 = "SELECT COUNT(*) FROM TABLE // 3


$total = mysql_affected_rows();

$total2 = mysql_num_rows($query);

$total3 = mysql_num_rows($query2);


echo "$total $total2 $total3"; // 10 10 3


위와 같이 사용할 수 있습니다.