pdostatement :: fetchall은 pdostatement 클래스의 메소드로, 결과 세트에서 한 번에 모든 행을 얻을 수있는 메소드입니다. pdo :: fetch_obj 와 함께 사용하면 각 행은 객체로 반환되며 각 열의 값은 객체의 속성이됩니다.
이 방법의 구문은 다음과 같습니다.
<?php
$dsn = 'mysql:host=localhost;dbname=gitbox_net_db;charset=utf8mb4';
$username = 'your_username';
$password = 'your_password';
try {
$pdo = new PDO($dsn, $username, $password);
$sql = 'SELECT id, name, email FROM users';
$stmt = $pdo->query($sql);
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
foreach ($results as $user) {
echo "ID: " . $user->id . "<br>";
echo "Name: " . $user->name . "<br>";
echo "Email: " . $user->email . "<br><br>";
}
} catch (PDOException $e) {
echo "Database error: " . $e->getMessage();
}
?>
위의 코드에서 데이터베이스 연결 정보는 가정 된 도메인 이름 gitbox.net을 사용하고 데이터베이스 이름은 gitbox_net_db 입니다. 쿼리에 의해 반환 된 각 데이터 행은 객체로 변환되며 필드 데이터는 객체 속성을 통해 직접 액세스하여 코드 구조가 더 명확 해집니다.
기본적으로 매개 변수가 전달되지 않으면 fetchall ()은 인덱스 배열을 반환합니다. pdo :: fetch_obj를 사용할 때는 객체 배열을 반환합니다. 예를 들어:
// 기본적으로 연관 배열을 반환합니다
$results = $stmt->fetchAll(); // 동등합니다 fetchAll(PDO::FETCH_BOTH)
echo $results[0]['name']; // 배열을 통한 액세스
// 반환 객체
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
echo $results[0]->name; // 객체를 통한 액세스
객체 접근 방식은 특히 서비스 계층, DTO 또는 응답 계층 구조를 구축 할 때 많은 객체 지향 개발자의 사고 모델에 가깝습니다.
필드 이름 일관성 : 객체 메소드에 의해 반환 된 속성 이름은 데이터베이스 필드 이름에 따라 다르므로 필드 명명 사양이 매우 중요합니다. 영어 소문자와 밑줄 분리를 사용하는 것이 좋습니다.
성능 고려 사항 : FetchAll ()은 모든 데이터를 한 번에로드합니다. 이는 결과 세트가 크지 않은 상황에 적합합니다. 데이터 볼륨이 크면 Fetch ()를 사용하여 루프가있는 행에 따라 처리하는 것이 좋습니다.
모델 클래스를 확장 할 때의 제한 사항 : fetch_obj는 객체를 반환하지만 stdclass 의 인스턴스입니다. 사용자 정의 클래스 객체를 반환하려면 pdo :: fetch_class를 사용하십시오.