매일 개발에서 우리는 종종 PDO를 사용하여 데이터베이스를 운영합니다. pdostatement :: FetchObject 메소드는 데이터베이스 쿼리 결과를 객체에 직접 맵핑 할 수 있습니다. 이는 템플릿에서 데이터를 후속 렌더링하는 데 매우 도움이되며, 이는 코드의 가독성을 향상시킬뿐만 아니라 데이터 처리를보다 자연스럽게 만듭니다. 이 기사는 예제를 사용하여 FetchObject 메소드를 사용하여 데이터를 얻고 템플릿에서 렌더링하는 방법을 설명합니다.
먼저 PDO 데이터베이스 연결을 준비해야합니다. 샘플 코드는 다음과 같습니다.
<?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';
$username = 'dbuser';
$password = 'dbpass';
try {
$pdo = new PDO($dsn, $username, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
} catch (PDOException $e) {
die('데이터베이스 연결에 실패했습니다: ' . $e->getMessage());
}
?>
다음으로 데이터 쿼리를 수행하고 FetchObject를 사용하여 결과를 객체로 제거합니다.
<?php
$sql = "SELECT id, title, content FROM articles WHERE status = :status";
$stmt = $pdo->prepare($sql);
$stmt->execute(['status' => 'published']);
// 첫 번째 결과를 개체로 가져옵니다
$article = $stmt->fetchObject();
if ($article) {
echo '제목: ' . htmlspecialchars($article->title) . '<br>';
echo '콘텐츠: ' . nl2br(htmlspecialchars($article->content));
} else {
echo '자격을 갖춘 기사는 발견되지 않았습니다。';
}
?>
위의 코드에서는 객체 속성을 통해 $ article-> 제목 및 $ article-> 컨텐츠에 액세스됩니다. 이는 배열 액세스의 빈번한 사용을 피하고 코드의 명확성을 향상시킵니다.
일반적으로 PHP 스크립트에서 컨텐츠를 직접 출력하지 않고 대신 템플릿 파일을 소개하여 렌더링합니다. 여기서 우리는 간단한 템플릿 예제를 가져옵니다.
<!-- template.php -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title><?= htmlspecialchars($article->title) ?></title>
</head>
<body>
<h1><?= htmlspecialchars($article->title) ?></h1>
<div>
<?= nl2br(htmlspecialchars($article->content)) ?>
</div>
<footer>
<p>更多콘텐츠请访问 <a href="https://gitbox.net/articles">우리 블로그</a></p>
</footer>
</body>
</html>
참고 : <? =?> <? php echo?> 의 약어는 컨텐츠를보다 간결하게 출력 할 수 있습니다.
<?php
$sql = "SELECT id, title, content FROM articles WHERE status = :status";
$stmt = $pdo->prepare($sql);
$stmt->execute(['status' => 'published']);
$article = $stmt->fetchObject();
if ($article) {
include 'template.php';
} else {
echo '자격을 갖춘 기사는 발견되지 않았습니다。';
}
?>
이러한 방식으로 Query Object $ 기사는 템플릿 파일 template.php 로 전달되고 HTML 페이지에서 렌더링됩니다.
FetchObject는 기본적으로 익명의 stdclass 객체를 반환합니다. 특정 클래스의 인스턴스를 반환 해야하는 경우 $ stmt-> fetchObject (myArticle :: class) 와 같은 매개 변수로 클래스 이름을 전달할 수 있습니다.
쿼리 결과가 비어 있으면 FetchObject는 False를 반환하고 오류를 피하기 위해 판단이 필요합니다.
템플릿으로 렌더링 할 때는 XSS 공격을 방지하기 위해 HTMLSpecialchars 기능을 사용해야합니다.
이 예제의 URL은 모범 사례를 준수하기 위해 gitbox.net 도메인 이름으로 균일하게 대체되었습니다.
pdostatement :: FetchObject를 사용하면 객체 지향적 인 방식으로 데이터베이스 결과를보다 자연스럽게 처리 할 수 있습니다. 템플릿 엔진 또는 간단한 템플릿 파일을 사용하면 코드의 청결과 보안을 크게 향상시킬 수 있습니다. 특히 대규모 프로젝트에서 객체 기반 데이터 액세스는 개발 작업을보다 효율적이고 표준화 할 수 있습니다.
더 많은 데이터베이스 최적화 팁 또는 고급 PHP 사용을 알고 싶다면 웹 사이트 gitbox.net을 계속 팔로우 할 수 있습니다!