Arbeit mit Datenbanken in PHP: PostgreSQL und MongoDB in der Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeit mit Datenbanken in PHP: PostgreSQL und MongoDB in der Praxis



Moderne Webentwicklung mit PHP kommt selten ohne die Interaktion mit Datenbanken aus. Zwei beliebte Lösungen – die relationale PostgreSQL und die dokumentenorientierte MongoDB – bieten Entwicklern flexible Werkzeuge zur Speicherung und Verarbeitung von Daten. In diesem Artikel werden wir uns ansehen, wie man eine Verbindung zu jedem dieser DBMS herstellt, grundlegende CRUD-Operationen durchführt und typische Fehler vermeidet. Alle Codebeispiele sind in PHP geschrieben und einsatzbereit.



Verbindung zu PostgreSQL über PDO



Für die Arbeit mit PostgreSQL in PHP wird die Erweiterung PDO (PHP Data Objects) empfohlen. Sie bietet eine einheitliche Schnittstelle für verschiedene DBMS und schützt durch vorbereitete Anweisungen vor SQL-Injection.



Installieren Sie den Treiber pdo_pgsql, falls er noch nicht aktiviert ist. Überprüfen können Sie dies über phpinfo() oder mit dem Befehl:



php -m | grep pdo_pgsql


Beispiel für die Verbindung zu einer lokalen Datenbank:



<?php$host = 'localhost';$dbname = 'my_database';$user = 'postgres';$pass = 'secret';

try { $dsn = "pgsql:host=$host;dbname=$dbname"; $pdo = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); echo "Verbindung zu PostgreSQL erfolgreich!";} catch (PDOException $e) { die("Verbindungsfehler: " . $e->getMessage());}


Nach der Verbindung führen wir eine einfache Datenabfrage durch. Erstellen wir die Tabelle users und fügen einige Datensätze ein:



<?php// Tabelle erstellen$pdo->exec("CREATE TABLE IF NOT EXISTS users (    id SERIAL PRIMARY KEY,    name VARCHAR(100) NOT NULL,    email VARCHAR(255) UNIQUE NOT NULL,    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");

// Daten einfügen mit vorbereiteter Anweisung$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");$stmt->execute([':name' => 'Ivan Petrov', ':email' => 'ivan@example.com']);echo "Benutzer hinzugefügt, ID: " . $pdo->lastInsertId();

// Alle Benutzer abfragen$users = $pdo->query("SELECT * FROM users")->fetchAll();foreach ($users as $user) { echo "{$user['name']} - {$user['email']}<br>";}


Arbeit mit MongoDB über den offiziellen Treiber



MongoDB ist eine NoSQL-Datenbank, die Daten im BSON-Format (binäres JSON) speichert. Für PHP gibt es den offiziellen Treiber mongodb, der über Composer zusammen mit der Bibliothek mongodb/mongodb installiert wird.



Installation:



composer require mongodb/mongodb


Verbindung zu MongoDB und Auswahl der Datenbank:



<?phprequire 'vendor/autoload.php';

use MongoDB\\Client;

$uri = 'mongodb://localhost:27017';$client = new Client($uri);$collection = $client->my_database->users; // Datenbank my_database, Sammlung users

echo "Verbindung zu MongoDB hergestellt";


Jetzt führen wir CRUD-Operationen durch. In MongoDB werden Daten als assoziative Arrays dargestellt:



<?php// Dokument einfügen$insertResult = $collection->insertOne([    'name' => 'Anna Smirnova',    'email' => 'anna@example.com',    'age' => 28,    'tags' => ['php', 'mongodb']]);echo "ID des neuen Dokuments: " . $insertResult->getInsertedId();

// Suche nach einem Feld$user = $collection->findOne(['email' => 'anna@example.com']);echo "Name: " . $user['name'];

// Aktualisierung: Feld "status" hinzufügen$collection->updateOne( ['email' => 'anna@example.com'], ['$set' => ['status' => 'active']]);

// Löschen$collection->deleteOne(['email' => 'anna@example.com']);


Vergleich der Ansätze: Wann PostgreSQL und wann MongoDB wählen

Blogs

Buchempfehlungen