
MySQLi의 affected_rows 프로퍼티는 마지막 쿼리의 영향을 받은 행의 수를 반환합니다. 하지만, UPDATE 쿼리에서 affected_rows가 항상 정확한 값을 반환하지 않는 이유는 다음과 같습니다.
- MySQLi의 affected_rows 프로퍼티는 INSERT, UPDATE, DELETE 쿼리에서만 정확한 값을 반환합니다. 하지만, SELECT 쿼리나 SHOW 쿼리에서 affected_rows는 항상 0을 반환합니다.
- UPDATE 쿼리에서 affected_rows가 0을 반환하는 경우는, UPDATE 쿼리가 WHERE 조건에 해당하는 행이 없을 때 발생합니다.
- UPDATE 쿼리에서 affected_rows가 정상적으로 반환되지 않는 이유는, MySQLi의 affected_rows 프로퍼티가 UPDATE 쿼리의 영향을 받은 행의 수를 정확하게 반환하지 못하기 때문입니다.
이 문제를 해결하는 방법은 다음과 같습니다.
- UPDATE 쿼리에서 affected_rows를 사용하는 대신, 쿼리 결과를 COUNT 함수를 사용하여 행의 수를 계산하는 방법을 사용할 수 있습니다.
- UPDATE 쿼리에서 affected_rows를 사용하는 대신, 쿼리 결과를 FETCH_ASSOC 함수를 사용하여 행의 수를 계산하는 방법을 사용할 수 있습니다.
예를 들어, UPDATE 쿼리에서 affected_rows를 사용하는 대신, 쿼리 결과를 COUNT 함수를 사용하여 행의 수를 계산하는 방법을 사용할 수 있습니다.
#hostingforum.kr
php
$stmt = $mysqli->prepare("UPDATE users SET name = ? WHERE id = ?");
$stmt->bind_param("si", $name, $id);
$stmt->execute();
$count = $mysqli->affected_rows;
위의 코드에서, affected_rows 프로퍼티를 사용하여 UPDATE 쿼리의 영향을 받은 행의 수를 계산할 수 있습니다. 하지만, UPDATE 쿼리에서 affected_rows가 항상 정확한 값을 반환하지 않는 경우가 발생할 수 있습니다.
이러한 경우, 쿼리 결과를 COUNT 함수를 사용하여 행의 수를 계산하는 방법을 사용할 수 있습니다.
#hostingforum.kr
php
$stmt = $mysqli->prepare("UPDATE users SET name = ? WHERE id = ?");
$stmt->bind_param("si", $name, $id);
$stmt->execute();
$count = $mysqli->query("SELECT COUNT(*) FROM users WHERE id = $id")->fetch_row()[0];
위의 코드에서, 쿼리 결과를 COUNT 함수를 사용하여 행의 수를 계산할 수 있습니다.
2025-03-10 07:20