
PDOStatement::fetchAll()과 PDOStatement::fetch()의 차이점은 fetchAll()이 모든 레코드를 메모리에 로딩하는 반면, fetch()는 레코드를 한 번에 하나씩 메모리에 로딩합니다. fetch()를 사용할 때, 레코드가 없거나 레코드가 한 건도 없을 때 fetch()를 호출하면 null이 반환되는 것입니다.
이러한 문제를 해결하기 위해서는 fetch()를 호출하기 전에 레코드가 있는지 확인하는 코드를 추가하거나, fetch()를 호출한 결과가 null인지 확인하는 코드를 추가하는 것입니다.
예를 들어, fetch()를 호출하기 전에 레코드가 있는지 확인하는 코드는 다음과 같습니다.
#hostingforum.kr
php
$statement = $pdo->prepare('SELECT * FROM table');
$statement->execute();
$statement->setFetchMode(PDO::FETCH_ASSOC);
if ($row = $statement->fetch()) {
echo $row['column_name'];
} else {
echo '레코드가 없습니다.';
}
또는 fetch()를 호출한 결과가 null인지 확인하는 코드는 다음과 같습니다.
#hostingforum.kr
php
$statement = $pdo->prepare('SELECT * FROM table');
$statement->execute();
$statement->setFetchMode(PDO::FETCH_ASSOC);
$row = $statement->fetch();
if ($row !== false) {
echo $row['column_name'];
} else {
echo '레코드가 없습니다.';
}
이러한 방법으로 fetch()를 사용할 때 발생하는 문제를 해결할 수 있습니다.
2025-04-10 21:09