php mit Adi Prinz

PHP und Datenbanken

Eine Datenbank ist ein organisiertes System zur Speicherung, Verwaltung und Abruf von Daten. Datenbanken ermöglichen es, große Mengen an Informationen effizient zu verwalten und zu durchsuchen. Sie bestehen typischerweise aus Tabellen, die in Zeilen und Spalten organisiert sind.

Beispiele für PHP Datenbanken

PHP ist eine serverseitige Skriptsprache, die weit verbreitet ist, um dynamische Webseiten und Webanwendungen zu erstellen. PHP kann nahtlos mit Datenbanken integriert werden, um Daten zu speichern, abzurufen und zu manipulieren.

  • Verbindung herstellen: PHP stellt eine Verbindung zur Datenbank her.
  • Abfragen ausführen: SQL-Befehle werden ausgeführt, um Daten zu erstellen, zu lesen, zu aktualisieren oder zu löschen (CRUD-Operationen).
  • Ergebnisse verarbeiten: Die Ergebnisse der Abfragen werden verarbeitet und können auf der Webseite angezeigt oder weiterverarbeitet werden.
  • Verbindung schließen: Die Datenbankverbindung wird geschlossen, um Ressourcen zu sparen.

Was ist CRUD?

CRUD steht für die vier grundlegenden Operationen, die auf Daten in einer Datenbank durchgeführt werden können:
CRUD ist ein Akronym für Create, Read, Update, and Delete.

Read (Lesen)

Lesen oder Abrufen von Daten aus der Datenbank. Dies wird typischerweise durch die SELECT-SQL-Anweisung erreicht.

Create (Erstellen)

Erstellen eines neuen Datensatzes in der Datenbank. Dies wird normalerweise durch die INSERT-SQL-Anweisung erreicht.

Update (Aktualisieren)

Aktualisieren bestehender Datensätze in der Datenbank. Dies erfolgt durch die UPDATE-SQL-Anweisung.

Delete (Löschen)

Löschen von Datensätzen aus der Datenbank. Dies wird durch die DELETE-SQL-Anweisung erreicht.

Grundlegende Operationen in diesem Skript

In diesem Skript lernen Sie drei Möglichkeiten für grundlegende Operationen im Umgang mit Datenbanken kennen:

  1. Einfache Anweisung mit MySQLi
  2. Anweisung mit MySQLi und Prepared Statements
  3. Einfache Anweisung mit PDO

Unterschiede der beiden MySQLi-Varianten:

  1. Sicherheit:

    • Einfache SELECT-Anweisung: Anfällig für SQL-Injections, wenn Benutzerinput direkt in die SQL-Abfrage eingebaut wird.
    • Prepared Statements: Sicherer gegen SQL-Injections, da Parameter getrennt von der SQL-Abfrage verarbeitet werden.
  2. Parameterbindung:

    • Einfache SELECT-Anweisung: Parameter werden direkt in die SQL-Abfrage eingefügt.
    • Prepared Statements: Parameter werden mit bind_param gebunden und nicht direkt in die SQL-Abfrage eingefügt.
  3. Performance:

    • Einfache SELECT-Anweisung: Kann bei wiederholten Abfragen langsamer sein, da die SQL-Abfrage jedes Mal neu geparst und kompiliert wird.
    • Prepared Statements: Kann bei wiederholten Abfragen schneller sein, da die Abfrage einmal geparst und kompiliert wird und dann mehrfach mit verschiedenen Parametern ausgeführt werden kann.

Datenbank Verbindung herstellen

Um eine Verbindung zu einer MySQL-Datenbank mit PHP herzustellen, können Sie die MySQLi- oder PDO-Erweiterungen verwenden. PDO ist dabei das aktuellste Interface, um auf Datenbanken zuzugreifen. MySQLi steht auch als Objekt zur Verfügung. PDO bietet dabei zusätzliche Vorteile wie Datenbankunabhängigkeit und sicherere Abfragen durch vorbereitete Anweisungen.

Datenbankverbindungsparameter festlegen:

$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

Diese Variablen enthalten die Informationen, die zur Verbindung mit der Datenbank erforderlich sind:

  • $servername: Der Servername, auf dem die Datenbank läuft (hier localhost, was den lokalen Rechner bedeutet).
  • $username: Der Benutzername, der für die Verbindung zur Datenbank verwendet wird (hier root).
  • $password: Das Passwort für den angegebenen Benutzer (hier leer, was oft bei lokalen Entwicklungsumgebungen der Fall ist).
  • $database: Der Name der Datenbank, mit der verbunden werden soll (hier test).

Unterschiede zwischen prozeduraler und objektorientierter Syntax

1. Prozedural

  • Nutzt Funktionen wie mysqli_connect() für die Verbindung und mysqli_query() für Abfragen.
  • Keine Objektorientierung.

2. Objektorientiert

  • Nutzt das MySQLi-Objekt (new mysqli) und Methoden wie $conn->query().
  • Mehr an objektorientierte Programmierkonzepte angepasst.

Vor- und Nachteile der prozeduralen Methode

Vorteile:

  • Einfach und leicht zu lesen.
  • Besonders nützlich, wenn du keine objektorientierte Programmierung verwendest.

Nachteile:

  • Weniger mächtig als die objektorientierte Syntax.
  • Nicht so flexibel bei der Fehlerbehandlung und Erweiterung.

Verbindung mit MySQLi Prozedural

MySQLi (MySQL Improved) ist spezifisch für MySQL-Datenbanken.


$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

// Verbindung erstellen
$conn = mysqli_connect($servername, $username, $password, $database);

// Verbindung prüfen
if (!$conn) {
die("Verbindung fehlgeschlagen: " . mysqli_connect_error());
}
echo "Verbindung erfolgreich";

Datenbankverbindungsparameter festlegen:

$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

Verbindung mit MySQLi Objektorientiert

MySQLi (MySQL Improved) ist spezifisch für MySQL-Datenbanken.


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

// Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $database);

// Verbindung prüfen
if ($conn->connect_error) {
die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}
echo "Verbindung erfolgreich";
?>

Datenbankverbindungsparameter festlegen:

$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

Diese Variablen enthalten die Informationen, die zur Verbindung mit der Datenbank erforderlich sind:

  • $servername: Der Servername, auf dem die Datenbank läuft (hier localhost, was den lokalen Rechner bedeutet).
  • $username: Der Benutzername, der für die Verbindung zur Datenbank verwendet wird (hier root).
  • $password: Das Passwort für den angegebenen Benutzer (hier leer, was oft bei lokalen Entwicklungsumgebungen der Fall ist).
  • $database: Der Name der Datenbank, mit der verbunden werden soll (hier test).

Verbindung zur Datenbank herstellen:


$conn = new mysqli($servername, $username, $password, $database);
    

Hier wird ein neues MySQLi-Objekt erstellt, das die Verbindung zur Datenbank herstellt. Die MySQLi-Konstruktorfunktion benötigt die zuvor definierten Verbindungsparameter.

Verbindung prüfen:


if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}
    

Diese Bedingung überprüft, ob ein Verbindungsfehler aufgetreten ist. Wenn ja, wird das Skript mit einer Fehlermeldung beendet. connect_error enthält die Beschreibung des Fehlers, falls die Verbindung fehlschlägt.

Erfolgreiche Verbindung melden:


echo "Verbindung erfolgreich";
    

Wenn die Verbindung erfolgreich hergestellt wurde, wird diese Nachricht ausgegeben.

Zusammengefasst

  • Der Code stellt eine Verbindung zu einer MySQL-Datenbank her.
  • Er verwendet die MySQLi-Erweiterung, um die Verbindung zu verwalten.
  • Verbindungsparameter (Servername, Benutzername, Passwort und Datenbankname) werden festgelegt.
  • Der Code prüft, ob die Verbindung erfolgreich war und gibt entweder eine Fehlermeldung oder eine Bestätigung der erfolgreichen Verbindung aus.

php.net/mysqli

Verbindung mit PDO

PDO (PHP Data Objects) ist eine Erweiterung von PHP, die eine einheitliche Schnittstelle zur Arbeit mit verschiedenen Datenbanken bietet. Hier sind die Hauptgründe und Szenarien, wann und warum Sie PDO verwenden sollten:

PDO unterstützt viele verschiedene Datenbanken (MySQL, PostgreSQL, SQLite, MSSQL, Oracle, etc.). Wenn Sie planen, Ihre Anwendung auf verschiedene Datenbanktypen zu portieren oder die Flexibilität zu haben, die Datenbank zu wechseln, erleichtert PDO diesen Prozess erheblich, da Sie denselben Code mit minimalen Änderungen verwenden können.

Sicherere Abfragen:

PDO unterstützt vorbereitete Anweisungen (prepared statements), die helfen, SQL-Injections zu verhindern. Dies ist ein entscheidender Vorteil gegenüber der Verwendung von Roh-SQL-Abfragen, die anfälliger für solche Angriffe sind.

Fehlerbehandlung:

PDO bietet eine flexible Fehlerbehandlung durch die Verwendung von Ausnahmen (Exceptions). Dies ermöglicht es Ihnen, Fehler auf eine einheitliche und kontrollierte Weise zu handhaben.


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
    // Set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Verbindung erfolgreich";
} catch(PDOException $e) {
    echo "Verbindung fehlgeschlagen: " . $e->getMessage();
}
?>

Datenbankverbindungsparameter festlegen:


$servername = "localhost";
$username = "root";
$password = "";
$database = "test";
    

Diese Variablen enthalten die Informationen, die zur Verbindung mit der Datenbank erforderlich sind:

  • $servername: Der Servername, auf dem die Datenbank läuft (hier localhost, was den lokalen Rechner bedeutet).
  • $username: Der Benutzername, der für die Verbindung zur Datenbank verwendet wird (hier root).
  • $password: Das Passwort für den angegebenen Benutzer (hier leer, was oft bei lokalen Entwicklungsumgebungen der Fall ist).
  • $database: Der Name der Datenbank, mit der verbunden werden soll (hier test).

Verbindung zur Datenbank herstellen:


$conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
    

Hier wird ein neues PDO-Objekt erstellt, das die Verbindung zur Datenbank herstellt. Der Konstruktor von PDO benötigt den DSN (Data Source Name), den Benutzernamen und das Passwort.

PDO-Attribute festlegen:


$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    

Dieses Attribut stellt den Fehler-Modus auf Ausnahme (Exception), wodurch Fehler als PDOException geworfen werden.

Verbindung prüfen:


try {
    // Verbindungscode
} catch(PDOException $e) {
    echo "Verbindung fehlgeschlagen: " . $e->getMessage();
}
    

Der Verbindungscode wird in einen try-Block eingefügt, um mögliche Verbindungsfehler abzufangen. Wenn ein Fehler auftritt, wird eine Ausnahme geworfen und im catch-Block verarbeitet, wobei die Fehlermeldung ausgegeben wird.

Erfolgreiche Verbindung melden:


echo "Verbindung erfolgreich";
    

Wenn die Verbindung erfolgreich hergestellt wurde, wird diese Nachricht ausgegeben.

Zusammengefasst

  • Der Code stellt eine Verbindung zu einer MySQL-Datenbank her.
  • Er verwendet die PDO-Erweiterung, um die Verbindung zu verwalten.
  • Verbindungsparameter (Servername, Benutzername, Passwort und Datenbankname) werden festgelegt.
  • Der Fehler-Modus wird so eingestellt, dass Ausnahmen geworfen werden.
  • Der Code prüft, ob die Verbindung erfolgreich war und gibt entweder eine Fehlermeldung oder eine Bestätigung der erfolgreichen Verbindung aus.

php.net/pdo

SELECT-Abfrage mit MySQLi und PDO

Die SELECT-Anweisung ist eine der grundlegenden SQL-Anweisungen und wird verwendet, um Daten aus einer Datenbank abzurufen. Hier sind die wichtigsten Aspekte der SELECT-Anweisung:

Grundstruktur

SELECT id, username, email
FROM users
WHERE active = 1
ORDER BY username ASC
LIMIT 10;

Auswahl der Spalten

Sie können spezifische Spalten auswählen, indem Sie ihre Namen angeben: SELECT Spalte1, Spalte2. Wenn Sie alle Spalten auswählen möchten, verwenden Sie SELECT *.

Angabe der Tabelle

Die Datenquelle wird durch die FROM-Klausel angegeben: FROM Tabelle.

Filtern der Ergebnisse

Die WHERE-Klausel wird verwendet, um nur die Datensätze auszuwählen, die bestimmte Bedingungen erfüllen: WHERE Bedingung.

Sortieren der Ergebnisse

Sie können die Ergebnisse mit ORDER BY sortieren: ORDER BY Spalte ASC|DESC.

Limitieren der Ergebnisse

Mit LIMIT können Sie die Anzahl der zurückgegebenen Datensätze begrenzen: LIMIT Anzahl.

Einfache SELECT-Anweisung mit MySQLi


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

// Verbindung herstellen
$conn = new mysqli($servername, $username, $password, $database);

// Verbindung prüfen
if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}

// SQL-Abfrage
$sql = "SELECT id, username, email FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // Ausgabe der Daten jeder Zeile
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["username"]. " - Email: " . $row["email"]. "
"; } } else { echo "0 Ergebnisse"; } // Verbindung schließen $conn->close(); ?>

Verbindungsinformationen:
$servername, $username, $password, und $database enthalten die Informationen zur Datenbankverbindung.

Verbindung herstellen:
Mit new mysqli($servername, $username, $password, $database) wird eine Verbindung zur MySQL-Datenbank hergestellt. Falls die Verbindung fehlschlägt, gibt connect_error einen Fehler aus und die Verbindung wird abgebrochen.

SQL-Abfrage:
Die SQL-Abfrage wird in der Variablen $sql gespeichert: SELECT id, username, email FROM users. query($sql) führt die Abfrage aus und speichert das Ergebnis in $result.

Ergebnisse prüfen und ausgeben:
num_rows > 0 prüft, ob die Abfrage Ergebnisse liefert. Falls Ergebnisse vorhanden sind, werden diese mit fetch_assoc() Zeile für Zeile ausgelesen und die Werte der Felder id, username, und email ausgegeben. Falls keine Ergebnisse vorhanden sind, wird "0 Ergebnisse" ausgegeben.

Verbindung schließen:
close() schließt die Verbindung zur Datenbank.

Einfache SELECT-Anweisung mit MySQLi und Prepared Statements


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

// Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $database);

// Verbindung prüfen
if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}

// SQL-SELECT-Abfrage vorbereiten
$sql = "SELECT id, username, email FROM users WHERE id = ?";

// Vorbereitung und Ausführung der Anweisung
if ($stmt = $conn->prepare($sql)) {
    // Parameter binden
    $stmt->bind_param("i", $id);

    // Parameter setzen und ausführen
    $id = 1;
    $stmt->execute();

    // Ergebnis binden
    $stmt->bind_result($result_id, $result_username, $result_email);

    // Ergebnisse abrufen
    while ($stmt->fetch()) {
        echo "ID: " . $result_id . " - Name: " . $result_username . " - Email: " . $result_email . "<br>";
    }

    // Statement schließen
    $stmt->close();
} else {
    echo "Fehler bei der Vorbereitung der Abfrage: " . $conn->error;
}

// Verbindung schließen
$conn->close();
?>
    

Verbindung erstellen und prüfen:
Eine Verbindung zur MySQL-Datenbank wird erstellt und auf Fehler überprüft.

SQL-SELECT-Abfrage vorbereiten:
Die SELECT-Abfrage wird mit einem Platzhalter (?) vorbereitet.

Statement vorbereiten und Parameter binden:
Die vorbereitete Anweisung wird mit prepare vorbereitet und der Parameter (id) wird mit bind_param gebunden.

Parameter setzen und Abfrage ausführen: Der Parameter wird gesetzt und die Abfrage wird mit execute ausgeführt.

Ergebnis binden:
Die Ergebnisse der Abfrage werden mit bind_result an Variablen gebunden.

Ergebnisse abrufen:
Die Ergebnisse werden mit fetch in einer Schleife abgerufen und ausgegeben.

Statement und Verbindung schließen: Das Statement und die Verbindung werden geschlossen.

Verbindungsinformationen:
$servername, $username, $password, und $database enthalten die Informationen zur Datenbankverbindung.

Einfache SELECT-Anweisung mit PDO


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

try {
    // Verbindung herstellen
    $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
    // Fehler-Modus auf Exception setzen
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // SQL-Abfrage
    $stmt = $conn->prepare("SELECT id, username, email FROM users");
    $stmt->execute();

    // Ergebnis als assoziatives Array festlegen
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    foreach ($stmt->fetchAll() as $row) {
        echo "id: " . $row["id"]. " - Name: " . $row["username"]. " - Email: " . $row["email"]. "
"; } } catch(PDOException $e) { echo "Fehler: " . $e->getMessage(); } // Verbindung schließen $conn = null; ?>

Verbindungsinformationen:
$servername, $username, $password, und $database enthalten die Informationen zur Datenbankverbindung.

Verbindung herstellen:
new PDO("mysql:host=$servername;dbname=$database", $username, $password) stellt eine Verbindung zur MySQL-Datenbank her. setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) aktiviert die Fehlerbehandlung, sodass Fehler als Ausnahmen geworfen werden.

SQL-Abfrage vorbereiten:
Die SQL-Abfrage wird mit prepare vorbereitet: SELECT id, username, email FROM users WHERE active = :active. :active ist ein benannter Platzhalter für einen Parameter.

Parameter binden:
bindParam(':active', $active) bindet den Parameter :active an die Variable $active.

Parameter-Wert festlegen:
$active = 1 setzt den Wert des Parameters auf 1.

Abfrage ausführen:
execute() führt die vorbereitete Abfrage aus.

Ergebnisse holen:
fetchAll(PDO::FETCH_ASSOC) holt alle Ergebnisse als assoziatives Array.

Ergebnisse ausgeben:
Eine foreach-Schleife gibt die Ergebnisse Zeile für Zeile aus.

Fehlerbehandlung:
Ein try-catch-Block fängt mögliche Ausnahmen und gibt eine Fehlermeldung aus.

Verbindung schließen:
conn = null schließt die Datenbankverbindung.

UPDATE-Abfrage mit MySQLi und PDO

Die UPDATE-Anweisung wird verwendet, um bestehende Datensätze in einer Datenbank zu ändern. Hier sind die wichtigsten Aspekte der UPDATE-Anweisung:

Grundstruktur

UPDATE users
SET username = 'new_username', email = 'new_email@example.com'
WHERE id = 1;

Auswahl der Tabelle

Die Tabelle, die aktualisiert werden soll, wird durch die UPDATE-Klausel angegeben: UPDATE Tabelle.

Festlegen der neuen Werte

Die SET-Klausel wird verwendet, um die Spalten und ihre neuen Werte anzugeben: SET Spalte1 = Wert1, Spalte2 = Wert2.

Filtern der Datensätze

Die WHERE-Klausel wird verwendet, um sicherzustellen, dass nur bestimmte Datensätze aktualisiert werden: WHERE Bedingung.

Einfache UPDATE-Anweisung mit MySQLi


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

// Verbindung zur Datenbank herstellen
$conn = new mysqli($servername, $username, $password, $database);

// Verbindung prüfen
if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}

// SQL-UPDATE-Abfrage
$sql = "UPDATE users SET email='newemail@example.com' WHERE id=1";

// Abfrage ausführen
if ($conn->query($sql) === TRUE) {
    if ($conn->affected_rows > 0) {
        echo "Datensatz erfolgreich aktualisiert.";
    } else {
        echo "Keine Änderungen vorgenommen.";
    }
} else {
    echo "Fehler beim Aktualisieren des Datensatzes: " . $conn->error;
}

// Verbindung schließen
$conn->close();
?>

Verbindung herstellen und prüfen:
Eine Verbindung zur MySQL-Datenbank wird mit MySQLi erstellt und auf Fehler überprüft.

SQL-UPDATE-Abfrage:
Die UPDATE-Abfrage wird definiert, um die E-Mail-Adresse des Benutzers mit der id=1 zu aktualisieren.

Abfrage ausführen:
Die Abfrage wird mit query ausgeführt und das Ergebnis wird überprüft.

Ergebnis überprüfen:
Überprüfen, ob die Abfrage erfolgreich war, anhand der Anzahl der betroffenen Zeilen (affected_rows).

Verbindung schließen:
Die Verbindung wird geschlossen.

UPDATE-Anweisung mit MySQLi und Prepared Statements


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

// Verbindung zur Datenbank herstellen
$conn = new mysqli($servername, $username, $password, $database);

// Verbindung prüfen
if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}

// SQL-UPDATE-Abfrage vorbereiten
$sql = "UPDATE users SET email=? WHERE id=?";

// Vorbereitung und Ausführung der Anweisung
$stmt = $conn->prepare($sql);
if ($stmt === false) {
    die("Fehler bei der Vorbereitung der Anweisung: " . $conn->error);
}

// Parameter binden
$stmt->bind_param("si", $email, $id);

// Parameter setzen und ausführen
$email = "newemail@example.com";
$id = 1;
$stmt->execute();

// Überprüfen, ob die Aktualisierung erfolgreich war
if ($stmt->affected_rows > 0) {
    echo "Datensatz erfolgreich aktualisiert.";
} else {
    echo "Keine Änderungen vorgenommen.";
}

// Statement und Verbindung schließen
$stmt->close();
$conn->close();
?>

Verbindung herstellen und prüfen:
Eine Verbindung zur MySQL-Datenbank wird mit MySQLi erstellt und auf Fehler überprüft.

SQL-UPDATE-Abfrage vorbereiten:
Die UPDATE-Abfrage wird mit Platzhaltern (?) vorbereitet.

Anweisung vorbereiten und prüfen:
Die vorbereitete Anweisung wird mit prepare vorbereitet und auf Fehler überprüft.

Parameter binden:
Die Parameter (email und id) werden mit bind_param gebunden.

Parameter setzen und Abfrage ausführen:
Die Parameter werden gesetzt und die Abfrage wird mit execute ausgeführt.

Ergebnis überprüfen:
Überprüfen, ob die Abfrage erfolgreich war, anhand der Anzahl der betroffenen Zeilen (affected_rows).

Statement und Verbindung schließen:
Das Statement und die Verbindung werden geschlossen.

Einfache UPDATE-Anweisung mit PDO


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

try {
    // Verbindung zur Datenbank herstellen
    $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
    // Fehlerbehandlung aktivieren
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // SQL-UPDATE-Abfrage vorbereiten
    $sql = "UPDATE users SET email = :email WHERE id = :id";

    // Vorbereitung und Ausführung der Anweisung
    $stmt = $conn->prepare($sql);

    // Parameter binden
    $stmt->bindParam(':email', $email);
    $stmt->bindParam(':id', $id);

    // Parameter setzen und ausführen
    $email = "newemail@example.com";
    $id = 1;
    $stmt->execute();

    // Überprüfen, ob die Aktualisierung erfolgreich war
    if ($stmt->rowCount() > 0) {
        echo "Datensatz erfolgreich aktualisiert.";
    } else {
        echo "Keine Änderungen vorgenommen.";
    }
} catch(PDOException $e) {
    echo "Fehler: " . $e->getMessage();
}

// Verbindung schließen
$conn = null;
?>
    

Verbindung herstellen und Fehlerbehandlung aktivieren:
Eine Verbindung zur MySQL-Datenbank wird mit PDO erstellt und die Fehlerbehandlung wird aktiviert.

SQL-UPDATE-Abfrage vorbereiten:
Die UPDATE-Abfrage wird mit benannten Platzhaltern (:email und :id) vorbereitet.

Anweisung vorbereiten und Parameter binden:
Die vorbereitete Anweisung wird mit prepare vorbereitet und die Parameter (email und id) werden mit bindParam gebunden.

Parameter setzen und Abfrage ausführen:
Die Parameter werden gesetzt und die Abfrage wird mit execute ausgeführt.

Ergebnis überprüfen:
Überprüfen, ob die Abfrage erfolgreich war, anhand der Anzahl der betroffenen Zeilen (rowCount).

Verbindung schließen:
Die Verbindung wird geschlossen.

INSERT-Abfrage mit MySQLi und PDO

Die INSERT-Anweisung wird verwendet, um neue Datensätze in eine Datenbanktabelle einzufügen. Hier sind die wichtigsten Aspekte der INSERT-Anweisung:

Grundstruktur

INSERT INTO users (username, email, password)
VALUES ('new_user', 'new_email@example.com', 'password123');

Auswahl der Tabelle

Die Tabelle, in die die neuen Datensätze eingefügt werden sollen, wird durch die INSERT INTO-Klausel angegeben: INSERT INTO Tabelle.

Angabe der Spalten

Die Spalten, in die die Werte eingefügt werden sollen, werden in Klammern nach dem Tabellennamen angegeben: (Spalte1, Spalte2, Spalte3).

Festlegen der Werte

Die VALUES-Klausel wird verwendet, um die Werte für die neuen Datensätze anzugeben: VALUES (Wert1, Wert2, Wert3).

Einfache INSERT-Anweisung mit MySQLi


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

// Verbindung zur Datenbank herstellen
$conn = new mysqli($servername, $username, $password, $database);

// Verbindung überprüfen
if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}

// SQL-INSERT-Abfrage
$sql = "INSERT INTO users (username, email) VALUES ('new_user', 'new_user@example.com')";

// Abfrage ausführen und überprüfen
if ($conn->query($sql) === TRUE) {
    echo "Neuer Datensatz erfolgreich eingefügt.";
} else {
    echo "Fehler: " . $sql . "
" . $conn->error; } // Verbindung schließen $conn->close(); ?>

Verbindungsinformationen:
$servername, $username, $password, und $database enthalten die Informationen zur Datenbankverbindung.

Verbindung zur Datenbank herstellen:
Eine Verbindung zur MySQL-Datenbank wird erstellt.

Verbindung überprüfen:
Die Verbindung wird überprüft, und bei einem Fehler wird das Skript beendet und eine Fehlermeldung ausgegeben.

SQL-INSERT-Abfrage:
Die INSERT-Anweisung wird definiert, um einen neuen Datensatz in die users-Tabelle einzufügen.

Abfrage ausführen und überprüfen:
Die Abfrage wird ausgeführt und überprüft, ob sie erfolgreich war. Bei Erfolg wird eine Bestätigung ausgegeben, andernfalls wird der Fehler angezeigt.

Verbindung schließen:
Die Verbindung zur Datenbank wird geschlossen.

INSERT-Anweisung mit MySQLi und Prepared Statements


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

// Verbindung zur Datenbank herstellen
$conn = new mysqli($servername, $username, $password, $database);

// Verbindung überprüfen
if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}

// SQL-INSERT-Abfrage vorbereiten
$stmt = $conn->prepare("INSERT INTO users (username, email) VALUES (?, ?)");

// Parameter binden
$stmt->bind_param("ss", $username, $email);

// Parameter setzen und Abfrage ausführen
$username = "new_user";
$email = "new_user@example.com";
$stmt->execute();

// Überprüfen, ob die Abfrage erfolgreich war
if ($stmt->affected_rows > 0) {
    echo "Neuer Datensatz erfolgreich eingefügt.";
} else {
    echo "Fehler beim Einfügen des Datensatzes.";
}

// Statement und Verbindung schließen
$stmt->close();
$conn->close();
?>
    

Verbindungsinformationen:
$servername, $username, $password, und $database enthalten die Informationen zur Datenbankverbindung.

Verbindung zur Datenbank herstellen:
Eine Verbindung zur MySQL-Datenbank wird erstellt.

Verbindung überprüfen:
Die Verbindung wird überprüft, und bei einem Fehler wird das Skript beendet und eine Fehlermeldung ausgegeben.

SQL-INSERT-Abfrage vorbereiten:
Die INSERT-Anweisung wird als Prepared Statement vorbereitet.

Parameter binden:
Die Parameter für das Prepared Statement werden gebunden. bind_param wird verwendet, um die Parameter zu binden (in diesem Fall zwei Strings, repräsentiert durch "ss").

Parameter setzen und Abfrage ausführen:
Die Parameter werden gesetzt und die Abfrage wird ausgeführt.

Ergebnis überprüfen:
Überprüfen, ob die Abfrage erfolgreich war, anhand der Anzahl der betroffenen Zeilen (affected_rows).

Statement und Verbindung schließen:
Das Statement und die Verbindung zur Datenbank werden geschlossen.

Einfache INSERT-Anweisung mit PDO


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

try {
    // Verbindung zur Datenbank herstellen
    $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
    // Fehlerbehandlung aktivieren
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // SQL-INSERT-Abfrage vorbereiten
    $sql = "INSERT INTO users (username, email) VALUES (:username, :email)";

    // Vorbereitung und Ausführung der Anweisung
    $stmt = $conn->prepare($sql);

    // Parameter binden
    $stmt->bindParam(':username', $username);
    $stmt->bindParam(':email', $email);

    // Parameter setzen und Abfrage ausführen
    $username = "new_user";
    $email = "new_user@example.com";
    $stmt->execute();

    // Überprüfen, ob die Abfrage erfolgreich war
    if ($stmt->rowCount() > 0) {
        echo "Neuer Datensatz erfolgreich eingefügt.";
    } else {
        echo "Fehler beim Einfügen des Datensatzes.";
    }
} catch(PDOException $e) {
    echo "Fehler: " . $e->getMessage();
}

// Verbindung schließen
$conn = null;
?>
    

Verbindungsinformationen:
$servername, $username, $password, und $database enthalten die Informationen zur Datenbankverbindung.

Verbindung zur Datenbank herstellen:
Eine Verbindung zur MySQL-Datenbank wird mit PDO erstellt.

Fehlerbehandlung aktivieren:
Die Fehlerbehandlung wird aktiviert, um PDO-Ausnahmen zu werfen.

SQL-INSERT-Abfrage vorbereiten:
Die INSERT-Anweisung wird mit benannten Platzhaltern (:username und :email) vorbereitet.

Anweisung vorbereiten und Parameter binden:
Die vorbereitete Anweisung wird mit prepare vorbereitet und die Parameter (username und email) werden mit bindParam gebunden.

Parameter setzen und Abfrage ausführen:
Die Parameter werden gesetzt und die Abfrage wird mit execute ausgeführt.

Ergebnis überprüfen:
Überprüfen, ob die Abfrage erfolgreich war, anhand der Anzahl der betroffenen Zeilen (rowCount).

Verbindung schließen:
Die Verbindung zur Datenbank wird geschlossen.

DELETE-Abfrage mit MySQLi und PDO

Die DELETE-Anweisung wird verwendet, um bestehende Datensätze aus einer Datenbanktabelle zu löschen. Hier sind die wichtigsten Aspekte der DELETE-Anweisung:

Grundstruktur

DELETE FROM users
WHERE id = 1;

Auswahl der Tabelle

Die Tabelle, aus der die Datensätze gelöscht werden sollen, wird durch die DELETE FROM-Klausel angegeben: DELETE FROM Tabelle.

Filtern der Datensätze

Die WHERE-Klausel wird verwendet, um sicherzustellen, dass nur bestimmte Datensätze gelöscht werden: WHERE Bedingung. Ohne eine WHERE-Klausel werden alle Datensätze in der Tabelle gelöscht.

Einfache DELETE-Anweisung mit MySQLi


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

// Verbindung zur Datenbank herstellen
$conn = new mysqli($servername, $username, $password, $database);

// Verbindung überprüfen
if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}

// SQL-DELETE-Abfrage erstellen
$sql = "DELETE FROM users WHERE id = 1";

// Abfrage ausführen
if ($conn->query($sql) === TRUE) {
    echo "Datensatz erfolgreich gelöscht.";
} else {
    echo "Fehler beim Löschen: " . $conn->error;
}

// Verbindung schließen
$conn->close();
?>
    

Verbindungsinformationen:
$servername, $username, $password, und $database enthalten die Informationen zur Datenbankverbindung.

Verbindung zur Datenbank herstellen:
Eine Verbindung zur MySQL-Datenbank wird mit MySQLi erstellt.

Verbindung überprüfen:
Überprüfen, ob die Verbindung erfolgreich hergestellt wurde.

SQL-DELETE-Abfrage erstellen:
Die DELETE-Abfrage wird direkt als String erstellt.

Abfrage ausführen:
Die Abfrage wird mit query ausgeführt.

Ergebnis überprüfen:
Überprüfen, ob die Abfrage erfolgreich war, indem die Rückgabe von query überprüft wird.

Verbindung schließen:
Die Verbindung wird geschlossen.

DELETE-Anweisung mit MySQLi und Prepared Statements


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

// Verbindung zur Datenbank herstellen
$conn = new mysqli($servername, $username, $password, $database);

// Verbindung überprüfen
if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}

// SQL-DELETE-Abfrage vorbereiten
$sql = "DELETE FROM users WHERE id = ?";

// Vorbereitung und Ausführung der Anweisung
$stmt = $conn->prepare($sql);

// Parameter binden
$id = 1;
$stmt->bind_param("i", $id);

// Abfrage ausführen
$stmt->execute();

// Überprüfen, ob die Abfrage erfolgreich war
if ($stmt->affected_rows > 0) {
    echo "Datensatz erfolgreich gelöscht.";
} else {
    echo "Kein Datensatz gefunden oder Fehler beim Löschen.";
}

// Statement und Verbindung schließen
$stmt->close();
$conn->close();
?>
    

Verbindungsinformationen:
$servername, $username, $password, und $database enthalten die Informationen zur Datenbankverbindung.

Verbindung zur Datenbank herstellen:
Eine Verbindung zur MySQL-Datenbank wird mit MySQLi erstellt.

Verbindung überprüfen:
Überprüfen, ob die Verbindung erfolgreich hergestellt wurde.

SQL-DELETE-Abfrage vorbereiten:
Die DELETE-Abfrage wird mit einem Platzhalter (?) vorbereitet.

Anweisung vorbereiten und Parameter binden:
Die vorbereitete Anweisung wird mit prepare vorbereitet und der Parameter (id) wird mit bind_param gebunden.

Abfrage ausführen:
Die Abfrage wird mit execute ausgeführt.

Ergebnis überprüfen:
Überprüfen, ob die Abfrage erfolgreich war, anhand der Anzahl der betroffenen Zeilen (affected_rows).

Statement und Verbindung schließen:
Das Statement und die Verbindung werden geschlossen.

Einfache DELETE-Anweisung mit PDO


<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";

try {
    // Verbindung zur Datenbank herstellen
    $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
    // Fehlerbehandlung aktivieren
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // SQL-DELETE-Abfrage vorbereiten
    $sql = "DELETE FROM users WHERE id = :id";

    // Vorbereitung und Ausführung der Anweisung
    $stmt = $conn->prepare($sql);

    // Parameter binden
    $stmt->bindParam(':id', $id);

    // Parameter setzen und ausführen
    $id = 1;
    $stmt->execute();

    // Überprüfen, ob die Löschung erfolgreich war
    if ($stmt->rowCount() > 0) {
        echo "Datensatz erfolgreich gelöscht.";
    } else {
        echo "Keine Datensätze gelöscht.";
    }
} catch(PDOException $e) {
    echo "Fehler: " . $e->getMessage();
}

// Verbindung schließen
$conn = null;
?>
    

Verbindungsinformationen:
$servername, $username, $password, und $database enthalten die Informationen zur Datenbankverbindung.

Verbindung zur Datenbank herstellen:
Eine Verbindung zur MySQL-Datenbank wird mit PDO erstellt.

Fehlerbehandlung aktivieren:
Die Fehlerbehandlung wird aktiviert, um Ausnahmen zu handhaben.

SQL-DELETE-Abfrage vorbereiten:
Die DELETE-Abfrage wird mit einem benannten Platzhalter (:id) vorbereitet.

Anweisung vorbereiten und Parameter binden:
Die vorbereitete Anweisung wird mit prepare vorbereitet und der Parameter (id) wird mit bindParam gebunden.

Parameter setzen und Abfrage ausführen:
Der Parameter wird gesetzt und die Abfrage wird mit execute ausgeführt.

Ergebnis überprüfen:
Überprüfen, ob die Abfrage erfolgreich war, anhand der Anzahl der betroffenen Zeilen (rowCount).

Verbindung schließen:
Die Verbindung wird geschlossen.