Travailler avec les bases de données en PHP : PostgreSQL et MongoDB en pratique
\n\nLe développement web moderne en PHP implique rarement de ne pas interagir avec des bases de données. Deux solutions populaires — la base relationnelle PostgreSQL et la base orientée documents MongoDB — offrent aux développeurs des outils flexibles pour stocker et traiter les données. Dans cet article, nous allons voir comment se connecter à chacun de ces SGBD, effectuer des opérations CRUD de base et éviter les erreurs typiques. Tous les exemples de code sont écrits en PHP et prêts à être utilisés.
\n\nConnexion à PostgreSQL via PDO
\n\nPour travailler avec PostgreSQL en PHP, il est recommandé d'utiliser l'extension PDO (PHP Data Objects). Elle fournit une interface unifiée pour différents SGBD et protège contre les injections SQL grâce aux requêtes préparées.
\n\nInstallez le pilote pdo_pgsql s'il n'est pas encore activé. Vous pouvez le vérifier via phpinfo() ou avec la commande :
php -m | grep pdo_pgsql\n\nExemple de connexion à une base de données locale :
\n\n<?php\n$host = 'localhost';\n$dbname = 'my_database';\n$user = 'postgres';\n$pass = 'secret';\n\ntry {\n $dsn = "pgsql:host=$host;dbname=$dbname";\n $pdo = new PDO($dsn, $user, $pass, [\n PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,\n PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC\n ]);\n echo "Connexion à PostgreSQL réussie !";\n} catch (PDOException $e) {\n die("Erreur de connexion : " . $e->getMessage());\n}\n\nAprès la connexion, effectuons une simple sélection de données. Créons la table users et insérons quelques enregistrements :
<?php\n// Création de la table\n$pdo->exec("CREATE TABLE IF NOT EXISTS users (\n id SERIAL PRIMARY KEY,\n name VARCHAR(100) NOT NULL,\n email VARCHAR(255) UNIQUE NOT NULL,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n)");\n\n// Insertion de données via une requête préparée\n$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");\n$stmt->execute([':name' => 'Ivan Petrov', ':email' => 'ivan@example.com']);\necho "Utilisateur ajouté, ID : " . $pdo->lastInsertId();\n\n// Sélection de tous les utilisateurs\n$users = $pdo->query("SELECT * FROM users")->fetchAll();\nforeach ($users as $user) {\n echo "{$user['name']} - {$user['email']}<br>";\n}\n\nTravailler avec MongoDB via le pilote officiel
\n\nMongoDB est une base de données NoSQL qui stocke les données au format BSON (JSON binaire). Pour PHP, il existe le pilote officiel mongodb, qui s'installe via Composer avec la bibliothèque mongodb/mongodb.
\n\nInstallation :
\n\ncomposer require mongodb/mongodb\n\nConnexion à MongoDB et sélection de la base de données :
\n\n<?php\nrequire 'vendor/autoload.php';\n\nuse MongoDB\\Client;\n\n$uri = 'mongodb://localhost:27017';\n$client = new Client($uri);\n$collection = $client->my_database->users; // base my_database, collection users\n\necho "Connexion à MongoDB effectuée";\n\nEffectuons maintenant des opérations CRUD. Dans MongoDB, les données sont représentées sous forme de tableaux associatifs :
\n\n<?php\n// Insertion d'un document\n$insertResult = $collection->insertOne([\n 'name' => 'Anna Smirnova',\n 'email' => 'anna@example.com',\n 'age' => 28,\n 'tags' => ['php', 'mongodb']\n]);\necho "ID du nouveau document : " . $insertResult->getInsertedId();\n\n// Recherche par champ\n$user = $collection->findOne(['email' => 'anna@example.com']);\necho "Nom : " . $user['name'];\n\n// Mise à jour : ajout du champ "status"\n$collection->updateOne(\n ['email' => 'anna@example.com'],\n ['$set' => ['status' => 'active']]\n);\n\n// Suppression\n$collection->deleteOne(['email' => 'anna@example.com']);\n\n