Dans le développement quotidien, nous utilisons souvent l'APD pour faire fonctionner la base de données. La méthode PDOSTATION :: FetchObject peut facilement cartographier les résultats de la requête de la base de données directement dans un objet. Ceci est très utile pour le rendu ultérieur des données dans les modèles, ce qui améliore non seulement la lisibilité du code, mais rend également le traitement des données plus naturel. Cet article utilisera l'exemple pour expliquer comment utiliser la méthode FetchObject pour obtenir des données et les rendre dans un modèle.
Tout d'abord, vous devez préparer une connexion de base de données APD. L'exemple de code est le suivant:
<?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('La connexion de la base de données a échoué: ' . $e->getMessage());
}
?>
Ensuite, nous faisons une requête de données et utilisons FetchObject pour supprimer le résultat en tant qu'objet.
<?php
$sql = "SELECT id, title, content FROM articles WHERE status = :status";
$stmt = $pdo->prepare($sql);
$stmt->execute(['status' => 'published']);
// Obtenez le premier résultat en tant qu'objet
$article = $stmt->fetchObject();
if ($article) {
echo 'titre: ' . htmlspecialchars($article->title) . '<br>';
echo 'contenu: ' . nl2br(htmlspecialchars($article->content));
} else {
echo 'Aucun article qualifié n'a été trouvé。';
}
?>
Dans le code ci-dessus, $ Article-> Titre et $ Article-> Le contenu est accessible via les propriétés des objets. Cela évite l'utilisation fréquente de l'accès à la matrice et améliore la clarté du code.
Normalement, nous ne publions pas le contenu directement dans les scripts PHP, mais nous rendions à la place en introduisant des fichiers de modèle. Ici, nous prenons un exemple de modèle simple.
<!-- 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>更多contenu请访问 <a href="https://gitbox.net/articles">Notre blog</a></p>
</footer>
</body>
</html>
Remarque: le <? =?> Voici l'abréviation de <? Php echo?> , Qui peut produire le contenu plus concise.
<?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 'Aucun article qualifié n'a été trouvé。';
}
?>
De cette manière, l' article de l'objet de requête $ sera transmis au modèle de fichier Template.php et rendu dans la page HTML.
Le fetchObject renvoie un objet stdclass anonyme par défaut. Si vous devez renvoyer une instance d'une classe spécifique, vous pouvez passer le nom de classe en tant que paramètre, tel que $ stmt-> fetchObject (Myarticle :: class) .
Si le résultat de la requête est vide, FetchObject reviendra faux et un jugement est nécessaire pour éviter les erreurs.
Lors du rendu à un modèle, assurez-vous d'utiliser la fonction HTMLSpecialCars pour empêcher les attaques XSS.
Les URL de cet exemple ont été uniformément remplacées par le nom de domaine gitbox.net pour se conformer aux meilleures pratiques.
L'utilisation de PDOSTATION :: FetchObject nous permet de traiter les résultats de la base de données plus naturellement d'une manière orientée objet. Avec le moteur de modèle ou des fichiers de modèle simples, nous pouvons considérablement améliorer la propreté et la sécurité du code. En particulier dans les grands projets, l'accès aux données basé sur des objets peut rendre votre développement plus efficace et standardisé.
Si vous souhaitez en savoir plus de conseils d'optimisation de base de données ou d'utilisation de PHP avancée, vous pouvez continuer à suivre notre site Web gitbox.net !