MySQLi Datenbank anlegen

Schaffen der Basis für die späteren Datensätze

Wie bereits beim create-Befehl ausgeführt, ist das Anlegen einer Datenbank, oft auch das Anlegen von darin benötigten Datentabellen nicht Teil von PHP-Skripte. Bei vielen Webhosting-Paketen gibt es fix eine Datenbank, die mitunter schon vorinstalliert ist und daher nicht mehr angelegt werden muss. Und auch die Datentabellen legt man nicht per Skript, sondern manuell an.

Das hat den Grund, weil man via phpMyAdmin in der Regel die Tabelle anlegen, denn es gibt diese Aktion nur einmal. Würden Tabellen immer wieder angelegt werden müssen, würde ein Skript Sinn machen. Doch in der Regel wird die Datenbank ebenso wie deren Tabellen einmal aufgebaut und später nur noch verändert, nicht aber nochmals gespeichert. Einmalige Aktionen über Skripte durchzuführen, braucht unnötig Zeit, um das Skript zu programmieren. In der gleichen Zeit hat man die Tabellen schon fix fertig am Server gespeichert.

MySQLi-Datenbank mit PHP extern anlegen

Es gibt aber doch Situationen, in denen zumindest das Anlegen von Tabellen dem Programmierer begegnet und zwar dann, wenn man fix fertige fremde Anwendungen installiert. Hier gibt es oft eine SQL-Datei, in der die MySQLi-Befehle für das Anlegen der nötigen Tabellen zu finden sind, damit die Anwendung später überhaupt funktioniert.

// Zugangsdaten zu MySQLi festlegen
@$db = new mysqli('localhost', 'ichbins', 'keineahnung');

// Verbindung aufbauen oder Fehler anzeigen
if (mysqli_connect_errno()) {
  printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error());
  exit();
}

// MySQLi-Befehl für die Datenbank
$sql = "CREATE DATABASE IF NOT EXISTS meine_db";

if ($db->query($sql)) {
  // Meldung bei Anlegen
  echo "Datenbank erfolgreich angelegt.";  
} else {
  // Meldung bei Fehler
  echo "Datenbank konnte nicht angelegt werden!";
}

// Verbindung wieder schließen
$db->close();

Dieses einfache Beispiel zeigt, wie der komplette Aufbau erfolgen kann. Zuerst wird der Zugang gelegt, den man normalerweise über eine zentrale config-Datei erledigt und dann im Skript nur noch mit include einbindet. Es folgt die Überprüfung der Verbindung und danach der Befehl, die Datenbank namens meine_db anzulegen. Klappt es, dann ist alles wunderbar und man bekommt eine Rückmeldung als Bestätigung, klappt es nicht, wird ein Fehler angezeigt. Zum Schluss wird nur noch die Verbindung geschlossen.

Anlegen einer ersten MySQLi-Datentabelle in der neuen Datenbank

$tab1_create="CREATE TABLE adressen (
       id int(11) NOT NULL auto_increment,
      vorname varchar(40) NOT NULL default "",
     nachname varchar(40) NOT NULL default "",
     adresse varchar(40) NOT NULL default "",
     plz int(5) NOT NULL default "",
    ort varchar(40) NOT NULL default "",
   email varchar(60) NOT NULL default "0",
   PRIMARY KEY  (id)
   ) TYPE=MyISAM;";
  

  if ($db->query($tab1_create)) {
  // Meldung bei Anlegen
  echo "Tabelle erfolgreich angelegt.";  
} else {
  // Meldung bei Fehler
  echo "Tabelle konnte nicht angelegt werden!";
}

Das Anlegen einer Tabelle für das direkte Speichern der Datensätze läuft auf der gleichen Basis, nur dass man dann schon eine Datenbank nutzen kann und daher bei den Zugangsdaten diese auch anführt. Das Anlegen einer Datenbank ist einfacher, weil man nur den Namen bekanntgeben muss.

In einer Tabelle oder auch Datentabelle braucht es aber auch die jeweiligen Felder. "id int(11) ist, wie beim create-Befehl schon ausgeführt, das Feld für die fortlaufende Nummer namens id als Zahlenfeld (int) mit 11 Zeichen Länge, also für sehr viele Datensätze. Oft reichen 4 oder 5 Zeichen Länge völlig aus. "vorname varchar(40)" bedeutet ein Textfeld des Typs varchar mit 40 Zeichen Länge. Das gilt für die anderen Eingaben auch.

Create und PHP in der Praxis

Wie oft wird man so eine Handlung setzen? In der Praxis gibt es zwei Situationen und zwar fertige Skripte, die man installieren möchte und eigene Projekte. Bei fertigen Skripten wie etwa einem CMS (Wordpress, Typo3) wird eine Installationsroutine durchgezogen und im Rahmen dieser werden die Tabellen auf Basis einer bestehenden Datenbank automatisch angelegt. Meist hat man schon vom Provider die Daten für eine Datenbank und braucht diese nur eintragen, der Rest erfolgt von selbst. Auch bei Modulen wie einem Gästebuch, Statistikskripte etc. hat man nichts mit dem Anlegen von Tabellen zu tun.

Wenn man selbst etwas ausprobiert, eine eigene Programmierung für die Webseite oder Funktionen anstrebt oder ähnliche Aktionen setzt, dann geht man üblicherweise in phpMyAdmin und legt dort die Tabellen eventuell auch eine noch nicht vorhandene Datenbank an und programmiert das nicht - einfach, weil man so viel schneller ist.

Lesen Sie auch

So richtig aus dem Vollen kann man dann schöpfen, wenn man die Programmiersprache PHP mit dem System der MySQLi-Datenbank verknüpft. Der SQL-Befehlssatz bleibt bestehen, wird aber durch die PHP-Umgebung ummantelt, damit beide kommunizieren können: die Datenbank weiß, was Sache ist und PHP versteht die Antwort. MySQL + PHP bedeutet, dass man direkt vom Skript aus auf die Daten zugreifen kann.

Die Grundvoraussetzung ist einmal das Anlegen einer Datenbank, was auch von PHP aus möglich ist und dann braucht es die Verbindung zur Datenbank.

Damit ist die Grundbasis gelegt und man kann Tabellen anlegen und die Daten speichern. Dabei kann mit mysqli_insert_id die aktuelle laufende Nummer für weitere Aktionen nützlich sein und wichtig ist das Verständnis mit mysqli_close, um nicht mehr gebrauchte Verbindungen zu beenden. Wichtig ist aber auch die richtige Schreibweise beim Arbeiten mit den Daten.

Das Herzstück ist aber die Abfrage. Zweifelsohne braucht man delete und andere Befehle auch, um zu manipulieren, aber mit select kann man verschiedenste Abfragen durchführen wie nach Kriterium, Menge oder auch als Stringabfrage samt Sortierungsangabe.

Diesen Artikel teilen

Kategorien

Grundlagen
HTML-Grundlagen
CSS-Grundlagen
Javascript-Grundlagen
PHP-Grundlagen
MySQL-Grundlagen
SEO-Grundlagen

Infos, Tipps, Vermarktung
Webdesign-Lexikon
Online-Werbung
PHP-Codeschnipsel