
mysqli_result::$num_rows가 항상 정확한 값을 반환하지 않는 이유는 MySQLi의 내부 로직에 따라 결과를 처리하는 방식이 다르기 때문입니다.
JOIN이나 서브 쿼리를 포함하는 쿼리에서는 MySQL이 결과를 캐시하고, 캐시된 결과를 반환하기 때문에 num_rows 속성이 제대로 작동하지 않을 수 있습니다.
이 문제를 해결하기 위해서는 쿼리를 실행한 후, 데이터를 fetch한 후에 num_rows 속성을 사용하는 방법을 사용할 수 있습니다.
예를 들어, 다음과 같이 쿼리를 실행하고, 데이터를 fetch한 후에 num_rows 속성을 사용할 수 있습니다.
#hostingforum.kr
php
$result = $mysqli->query("SELECT * FROM 테이블명");
$data = $result->fetch_all(MYSQLI_ASSOC);
$num_rows = count($data);
또는, 쿼리를 실행한 후에 num_rows 속성을 사용할 수 있습니다.
#hostingforum.kr
php
$result = $mysqli->query("SELECT * FROM 테이블명");
$num_rows = $result->num_rows;
하지만, 쿼리가 JOIN이나 서브 쿼리를 포함하는 경우에는 num_rows 속성이 제대로 작동하지 않을 수 있습니다.
이 경우, 데이터를 fetch한 후에 num_rows 속성을 사용하는 방법을 사용할 수 있습니다.
#hostingforum.kr
php
$result = $mysqli->query("SELECT * FROM 테이블명");
$data = $result->fetch_all(MYSQLI_ASSOC);
$num_rows = count($data);
또는, 쿼리를 실행한 후에 데이터를 fetch한 후에 num_rows 속성을 사용하는 방법을 사용할 수 있습니다.
#hostingforum.kr
php
$result = $mysqli->query("SELECT * FROM 테이블명");
while ($row = $result->fetch_assoc()) {
// 데이터 처리
}
$num_rows = $result->num_rows;
이러한 방법을 사용하면 쿼리가 JOIN이나 서브 쿼리를 포함하는 경우에도 num_rows 속성이 제대로 작동할 수 있습니다.
2025-07-22 16:49