PHP에서 데이터베이스 작업을 수행하는 데 사용할 때 일반적으로 MySQLI_QUERY ()를 사용하여 쿼리를 실행하고 MySQLI_RESULT 객체를 사용하여 결과를 얻습니다. 쿼리 결과를 객체로 직접 변환하려면 mysqli_result :: fetch_object () 메소드를 사용할 수 있습니다.
이 기사를 사용하면 사용 방법으로 단계별로 이동하여 간단한 예제로 시연합니다.
fetch_object () 는 mysqli_result 클래스의 메소드이며 쿼리 결과에서 현재 행을 가져 와서 객체로 반환하는 데 사용됩니다. 기본적으로 속성 이름이 데이터베이스 필드 이름에 해당하는 표준 객체 ( stdclass )를 반환합니다.
클래스 이름으로 전달하고 메소드가 지정된 클래스의 인스턴스를 반환하고 필드 값을 객체 속성에 할당 할 수 있습니다.
object mysqli_result::fetch_object ([ string $class_name = "stdClass" [, array $params ]] )
$ class_name : 클래스 이름이 인스턴스화되고 기본값은 stdClass 입니다.
$ params : 클래스 이름이 지정되면 생성자 매개 변수를 전달할 수 있습니다.
사용자 라는 테이블이 있다고 가정하면 구조는 다음과 같습니다.
ID | 이름 | 이메일 |
---|---|---|
1 | 앨리스 | alice@m66.net |
2 | 단발 | bob@m66.net |
샘플 코드는 다음과 같습니다.
<?php
// 데이터베이스에 연결하십시오
$mysqli = new mysqli("localhost", "username", "password", "database");
// 연결을 확인하십시오
if ($mysqli->connect_errno) {
echo "연결이 실패했습니다: " . $mysqli->connect_error;
exit();
}
// 쿼리를 실행하십시오
$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);
if ($result) {
while ($user = $result->fetch_object()) {
echo "ID: " . $user->id . "<br>";
echo "Name: " . $user->name . "<br>";
echo "Email: " . $user->email . "<br><br>";
}
$result->free();
} else {
echo "쿼리가 실패했습니다: " . $mysqli->error;
}
// 연결을 닫으십시오
$mysqli->close();
?>
이 예에서 각 루프 $ 사용자는 현재 행의 ID , 이름 및 이메일 속성을 포함하는 stdClass 객체입니다.
Fetch_object () 도 다음과 같은 특정 클래스 객체를 반환하도록 할 수도 있습니다.
<?php
class User {
public $id;
public $name;
public $email;
public function display() {
echo "[$this->id] $this->name <$this->email><br>";
}
}
$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);
if ($result) {
while ($user = $result->fetch_object('User')) {
$user->display();
}
$result->free();
}
?>
이 방법으로, 루프 할 때마다 사용자 인스턴스를 얻고 메소드를 직접 호출 할 수 있습니다.
쿼리 결과가 비어 있으면 fetch_object ()가 false를 반환합니다.
클래스 이름이 지정된 경우 클래스의 속성은 공개 되어야합니다. 그렇지 않으면 값을 직접 할당 할 수 없습니다.
fetch_object ()는 한 번에 한 줄의 데이터 만 추출하며 루프에서 사용해야합니다.