Datenbanken
MySQL

Informatik Johann Penon

Daten in Datenbank einfügen (insert)


Um Daten in eine Datenbank einzufügen, ist es zunächst notwendig diese in einem Formular zu erfassen, um sie dann in einem weiteren Skript in die entsprechende Datenbank einzufügen. Das Beispiel ist wieder auf eine Kundentabelle bezogen.

Wenn Sie die Skripte: "kunden_einfuegen_formular.htm" und "kunden_einfuegen.php" verstehen, dann können Sie die folgenden Beschreibungen ignorieren.

Für die Eingabe der Kundendaten muss zunächst als Benutzungsschnittstelle ein Formular erstellt werden. Der unten aufgeführte Ausschnitt zeigt das Erfassen des Vor- und Nachnamens eines Kunden

<label for="kuname">Name: </label> 
   <input name="kuname" id="kuname" type="text" size="35" maxlength="35" />
<label for="kuvorname">Vorname: </label>
   <input name="kuvorname" id="kuvorname" type="text" size="35" maxlength="35" />            
          

Wichtig ist, dass möglichst bei Name der Bezeichner des entsprechenden Tabellenfeldes genommen wird. Dies erleichtert die Lesbarkeit.

Mit dem Abschicken der Daten aus dem Eingabeformular wird ein Skript (hier: "kunden_einfuegen.php") aufgerufen, dass die Daten in die Datenbank einträgt.

Zunächst muss in diesem Skript eine Verbindung zur Datenbank hergestellt werden.

Um die Daten aus dem aufrufenden Formular zu übernehmen ist ab PHP Version 4.1 nur noch die Methode mit globalen Arrays angeraten, da ab dieser Version globale Daten aus Sicherheitsgründen abgeschaltet wurden. Es bietet sich deshalb an, zunächst alle Daten des Formulars wie in folgendem Beispiel beschrieben in lokale Variablen einzulesen. Die Variablennamen in dem Array $_POST müssen mit den Feldnamen der Formularseite übereinstimmen.

// Variablen aus dem Forumlar übernehmen
 $kuname=$_POST['kuname'];
 $kuvorname=$_POST['kuvorname']

Nun können die Daten mit dem SQL-Befehl "insert" in die Datenbank eingefügt werden. Dabei gibt es mehrere Möglichkeiten. In den meisten Büchern wird die Syntax "INSERT INTO kunden VALUES ("Müller", "Hans")" benutzt. Dabei müssen die hinter "Values" eingegebenen Werte genau der Reihenfolge entsprechen, wie sie in der Datenbank besteht. Dies ist eine häufige Fehlerquelle, insbesondere wenn Felder im Formular leer bleiben. Deshalb ist die unten aufgeführte Vorgehensweise mit dem Befehl "set" sicherer und lesbarer. Hier wird jedes Formularfeld ausdrücklich dem dazugehörigen Feldnamen der Datenbank zugewiesen. Beispiel:

// Überpruefen ob der Kunde schon vorhanden ist
  $query1 = "SELECT kuname FROM kunden
             WHERE kuname LIKE '$kuname' and kuvorname LIKE '$kuvorname' and kuplz LIKE '$kuplz'"; 
  $result = mysql_query($query1);
// Fehlermeldung ausgeben, bzw. Kunden einfuegen
  $num=mysql_NumRows($result); 
  if ($num)
  {
    echo "Kunde schon vorhanden!";
  } 
  else 
  { 
    $query2="INSERT INTO kunden
      SET kuname='$kuname',
      kuvorname='$kuvorname',
      kustrasse='$kustrasse',
      kuplz='$kuplz',
      kuort='$kuort',
      kutelefon='$kutelefon',
      kugebdat='$kugebdat',
      kudatfschein='$kudatfschein';";

    $result2 = mysql_query($query2);
    if ($result2)
    { 
      print"<p><b>$kuname</b> wurde erfolgreich in die Kundendatei aufgenommen.</p>";
    }
    else
    { 
      print"Datenbankfehler! Kunde konnte nicht aufgenommen werden!";
    } 
  } 

Zeichenketten und Datumsangaben müssen innerhalb eines SQL-Befehls immer in Anführungszeichen gesetzt sein, Zahlen nicht. Es ist egal, ob dies einfache oder doppelte Anführungszeichen sind, das Zeichen für den Anfang muss aber mit dem Zeichen für das Ende übereinstimmen.

Es wird in diesem Beispielskript anhand von Vor- und Nachname sowie der Postleitzahl überprüft, ob die Kundendaten bereits eingegeben wurden.



zum Seitenanfang springen

zum Seitenanfang springen