Formulardaten in einer MySQL-Datenbank speichern

Formulardaten mit PHP an eine MySQL-Datenbank weitergeben

Die von Ihnen erstellten Tabellen der Datenbank können Sie von den Besuchern Ihrer Webseite automatisch füllen lassen. Dazu füllt der Benutzer ein Formular aus, und mithilfe von PHP werden die Formulardaten in die MySQL-Datenbank-Tabelle eingetragen.

<html>  
 <body>  
   Bitte geben Sie folgende Daten für Ihre Bestellung ein:  
   <form action = "bestellung_db.php" method = "post">  
     <p><input size="20" name="name"> Vorname und Nachname</p>
     <p><input size="20" name="strasse"> Strasse</p>
     <p><input size="20" name="ort"> PLZ und Ort</p>
     <p><input size="10" name="menge"> kg (Menge)</p>
     Apfelsorte;<br>  
     <p><input type="radio" name="sorte" value="Jonagold">Jonagold  
        <input type="radio" name="sorte" value="Gala">Gala  
        <input type="radio" name="sorte" value="Elstar">Elstar</p>  
        <input type="submit" value="Senden">
        <input type="reset">  
    </form>  
 </body>  
</html>

Beispiel: bestellung db.php

Im Folgenden wird das PHP-Skript erstellt, das die Daten des HTML-Formulars auswertet. Die Daten des Besuchers sollen in die Tabelle bestellung der Datenbank appelmann gespeichert werden.

<?php
$server   = "localhost";
$user     = "root";
$passwort = "";
$database = "appelmann";
$table    = "bestellung";
 
// Formulardaten aus $_POST übernehmen
$name    = $_POST["name"];
$strasse = $_POST["strasse"];
$ort     = $_POST["ort"];
$sorte   = $_POST["sorte"];
$menge   = $_POST["menge"];
 
try {
    // Verbindung zur Datenbank herstellen
    $dsn = "mysql:host=$server;dbname=$database;charset=utf8";
    $pdo = new PDO($dsn, $user, $passwort);
    //setAttribute setzt den Fehlermodus auf ERRMODE_EXCEPTION, wodurch bei Fehlern eine Ausnahme (Exception) ausgelöst wird.
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
    // SQL-Anweisung vorbereiten
    $sql = "INSERT INTO $table (name, strasse, ort, sorte, menge) 
            VALUES (:name, :strasse, :ort, :sorte, :menge)";
 
    // SQL-Anweisung ausführen
    //prepare bereitet die SQL-Anweisung vor.
    $stmt = $pdo->prepare($sql);
    //bindParam bindet die Formulardaten an die entsprechenden Platzhalter in der SQL-Anweisung.
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':strasse', $strasse);
    $stmt->bindParam(':ort', $ort);
    $stmt->bindParam(':sorte', $sorte);
    $stmt->bindParam(':menge', $menge);
 
    //execute führt die SQL-Anweisung aus.
    if ($stmt->execute()) {
        echo "Vielen Dank, Ihre Bestellung wurde gespeichert ...";
    } else {
        echo "Es gab ein Problem bei der Verarbeitung Ihrer Bestellung.";
    }
 
    // Verbindung schließen
    $pdo = null;
 
} catch (PDOException $e) {
    //Falls bei der Ausführung der Datenbankanweisungen ein Fehler auftritt, wird eine PDOException ausgelöst und eine Fehlermeldung angezeigt.
    echo "Fehler: " . $e->getMessage();
}
?>