
mysqli_stmt::$affected_rows는 쿼리 실행 후에 바로 값을 반환합니다. 쿼리 실행 후에 mysqli_stmt::close()을 호출해도 값은 반환되지 않습니다.
mysqli_stmt::$affected_rows는 INSERT, UPDATE, DELETE 쿼리 모두에 대해 영향을 받은 행의 수를 반환합니다.
mysqli_stmt::$affected_rows를 사용하는 경우, 쿼리 실행 후에 쿼리 결과를 다시 조회하는 쿼리를 실행할 경우, 이전 쿼리에서 영향을 받은 행의 수를 반환하는 문제가 발생할 수 있습니다.
예를 들어, 다음과 같은 쿼리를 실행한 후에 mysqli_stmt::$affected_rows를 사용하여 영향을 받은 행의 수를 반환하는 경우, 영향을 받은 행의 수를 반환하지 못할 수 있습니다.
#hostingforum.kr
php
$stmt = $mysqli->prepare("SELECT * FROM 테이블");
$stmt->execute();
$affected_rows = $stmt->affected_rows;
$stmt->close();
$stmt = $mysqli->prepare("INSERT INTO 테이블 (컬럼) VALUES ('값')");
$stmt->execute();
$affected_rows = $stmt->affected_rows; // 영향을 받은 행의 수를 반환하지 못할 수 있습니다.
이러한 문제를 해결하기 위해, 쿼리 실행 후에 mysqli_stmt::$affected_rows를 사용하기 전에 mysqli_stmt::store_result()를 호출하는 것을 추천합니다.
#hostingforum.kr
php
$stmt = $mysqli->prepare("SELECT * FROM 테이블");
$stmt->execute();
$stmt->store_result();
$affected_rows = $stmt->affected_rows;
$stmt = $mysqli->prepare("INSERT INTO 테이블 (컬럼) VALUES ('값')");
$stmt->execute();
$stmt->store_result();
$affected_rows = $stmt->affected_rows; // 영향을 받은 행의 수를 반환할 수 있습니다.
2025-05-01 04:52