PHP에서 PDO (PHP Data Objects)는 데이터베이스에 액세스하기위한 가벼운 데이터베이스 추상화 계층입니다. PDO 를 사용하면 다양한 SQL 쿼리를 쉽게 실행할 수 있으며 MySQL, PostgreSQL, SQLite 등과 같은 다양한 데이터베이스 시스템을 지원할 수 있습니다. 쿼리 결과를 사용자 정의 PHP 객체에 직접 매핑 할 수 있습니다.
pdostatement :: fetchObject는 데이터베이스 쿼리 결과에서 레코드 행을 가져와 객체에 맵핑하는 함수입니다. Fetch 메소드와 달리 FetchObject는 연관 배열 또는 인덱스 어레이가 아니라 객체를 반환합니다. 기본적으로 반환 된 객체는 stdclass 유형이지만 사용자 정의 클래스 이름을 전달하여 쿼리 결과를 사용자 정의 객체에 매핑 할 수 있습니다.
먼저 기본 PDO를 사용하여 데이터베이스에 연결하고 쿼리를 실행하고 FetchObject를 사용하여 쿼리 결과를 얻고 stdClass 객체를 반환하십시오.
<?php
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT * FROM users');
while ($row = $stmt->fetchObject()) {
echo $row->name . "\n"; // 쿼리 테이블에 하나가 있다고 가정합니다 name 전지
}
?>
이 예에서 $ 행은 STDClass 객체가되며 객체의 속성에 액세스 할 수있는 것처럼 데이터베이스 레코드의 필드에 액세스 할 수 있습니다.
쿼리 결과를 특정 클래스 객체에 매핑하려면 FetchObject 의 클래스 이름을 전달할 수 있습니다. 다음은 사용자 정의 클래스를 사용하여 쿼리 결과를 처리하는 방법입니다.
<?php
class User {
public $id;
public $name;
public $email;
public function __construct($id, $name, $email) {
$this->id = $id;
$this->name = $name;
$this->email = $email;
}
}
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users');
while ($user = $stmt->fetchObject('User')) {
echo "ID: " . $user->id . " Name: " . $user->name . " Email: " . $user->email . "\n";
}
?>
이 예에서 FetchObject ( '사용자')는 쿼리 결과를 사용자 클래스의 객체에 매핑합니다. 각 데이터 행은 사용자 객체를 생성하며 객체 속성을 통해 직접 데이터에 액세스 할 수 있습니다.
기본적으로 FetchObject는 쿼리 결과에서 직접 필드를 사용하여 객체의 속성을 설정합니다. 클래스에 생성자가있는 경우 PDO는 생성자 매개 변수를 무시합니다. 이 경우 pdostatement :: setfetchMode 메소드를 사용 하여이 문제를 해결할 수 있습니다. 예를 들어, 생성자를 통해 객체를 초기화하려면 다음 방법을 사용할 수 있습니다.
<?php
class User {
public $id;
public $name;
public $email;
public function __construct($id, $name, $email) {
$this->id = $id;
$this->name = $name;
$this->email = $email;
}
}
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users');
$stmt->setFetchMode(PDO::FETCH_CLASS, 'User');
while ($user = $stmt->fetch()) {
echo "ID: " . $user->id . " Name: " . $user->name . " Email: " . $user->email . "\n";
}
?>
pdo :: fetch_class를 설정함으로써 PDO는 데이터를 가져올 때 사용자 정의 생성자를 사용하여 개체를 초기화해야한다고 말합니다.
pdostatement :: fetchObject를 사용하면 쿼리 결과를 객체에 쉽게 매핑 할 수 있습니다.
기본적으로 FetchObject는 stdclass 객체를 반환하지만 클래스 이름을 지정하여 쿼리 결과를 사용자 정의 PHP 클래스 객체에 매핑 할 수도 있습니다.
생성자를 통해 객체를 초기화 해야하는 경우 setfetchMode 메소드를 사용하여 pdo :: fetch_class 모드를 지정할 수 있습니다.
pdostatement :: fetchObject를 사용하면 데이터베이스 쿼리 결과를보다 편리하게 조작하고 데이터를 객체 지향적 인 방식으로 처리 할 수 있습니다.