| |
| * Link führt ins Internet |
|
| |
Nachdem Sie nun erfahren haben, wie man Datenbanktabellen erzeugt und entfernt, wollen wir Ihnen nun noch zeigen, wie Sie Änderungen an der Datenbanktabellen-Struktur vornehmen können.
Sie haben die Möglichkeit, einzelne Felder hinzuzu fügen, zu löschen oder deren Typ zu ändern. Die Änderungen erfolgen hierbei mit Hilfe der MySQL-Anweisung ALTER, die Sie mit mysql_query() oder mysql_db_query() an den Server senden.
Felder hinzufügen
Neue Felder in eine Datenbanktabelle einzufügen geht so:
<?
// Verbindung zum MySQL-Server
$db = mysql_connect ("localhost", "matthias", "");
$SQL_Befehl = "ALTER TABLE Mitglieder ADD Telefon CHAR(14)";
mysql_db_query("verein", $SQL_Befehl);
mysql_close($db);
?>
|
Im vorliegenden Beispiel wird das Feld Telefon mit dem Typ CHAR hinzugefügt.
Feldtyp ändern
Wollen Sie den Typ eines bestehenden Feldes ändern, lässt sich dies wie folgt umsetzen:
<?
// Verbindung zum MySQL-Server
$db = mysql_connect ("localhost", "matthias", "");
$SQL_Befehl = "ALTER TABLE Mitglieder MODIFY Telefon INTEGER";
mysql_db_query("verein", $SQL_Befehl);
mysql_close($db);
?>
|
Nun besitzt das Feld Telefon den Typ INTEGER.
| Achtung: Das Ändern des Typs eines Feldes sollte äußerst sorgfältig durchgeführt werden. Nicht jeder Typ lässt sich in einen anderen Typ umwandeln. Daher ist darauf zu achten, dass es zu keinem Datenverlust kommt. |
Feld löschen
Das Löschen von Feldern bereitet keine Schwierigkeiten. Natürlich sollte klar sein, dass die Entfernung eines Feldes grundsätzlich zu einem Datenverlust führt.
<?
// Verbindung zum MySQL-Server
$db = mysql_connect ("localhost", "matthias", "");
$SQL_Befehl = "ALTER TABLE Mitglieder DROP COLUMN Telefon";
mysql_db_query("verein", $SQL_Befehl);
mysql_close($db);
?>
|
Ermitteln der Tabellenstruktur
Die meisten Funktionen, die Informationen über Tabellen und Felder liefern, beziehen sich auf die Tabelleninhalte (Ergebnistabellen). Die Funktion mysql_list_fields() bezieht sich dagegen auf die Struktur der Datenbanktabellen. Diese Unterscheidung sollten Sie immer beachten, wenn es um die Ermittlung von Tabelleninhalte geht. Mit mysql_list_fields() können Sie die Spaltenbezeichnungen einzelner Datenbanktabellen auslesen.
<?php
$db = mysql_connect ("localhost", "matthias", "");
$felder = mysql_list_fields("verein","mitglieder",$db);
mysql_close($db);
?>
|
Allerdings lassen sich auf die Ergebnisstruktur nicht Funktionen wie mysql_result() oder mysql_num_rows() anwenden. Es handelt sich nicht, wie bisher um eine der üblichen Ergebnistabellen. Zur Verarbeitung stehen Ihnen folgende Funktionen zur Verfügung:
. mysql_num_fields() - ermittelt die Zahl der Felder.
. mysql_field_flags() - liefert eine Liste mit Feldeigenschaften.
. mysql_field_len() - ermittelt die Länge eines Feldes.
. mysql_field_name() - ermittelt den Namen eines Feldes.
. mysql_field_type() - ermittelt den Datentyp eines Feldes.
Mit Ausnahme von mysql_num_fields(), mit der Sie die Anzahl der Felder ermitteln, beziehen sich sämtliche Funktionen immer auf ein bestimmtes Feld. Dieses ist per Index im zweiten Argument anzugeben. Der Indexwert 0 steht auch in diesem Fall für das erste Feld. Im ersten Argument ist die Ergebnis-ID, also der Zeiger auf die Ergebnisstruktur, zu benennen, im vorliegenden Fall ist dies die Variable $felder.
| Achtung: Hierbei handelt es sich um die Struktur, die von mysql_list_fields() erzeugt wird, nicht um das Ergebnis einer Abfrage. |
Beispiel
<?php
$db = mysql_connect ("localhost", "matthias", "");
$felder = mysql_list_fields("verein","mitglieder",$db);
if ($felder) {
$anzahl = mysql_num_fields($felder);
for ($i = 0; $i < $anzahl; $i++) {
echo "<p>";
echo mysql_field_name($felder, $i) . " / ";
echo mysql_field_type($felder, $i) . " / ";
echo mysql_field_len($felder, $i) . " / ";
echo mysql_field_flags($felder, $i);
echo "</p>";
}
}
mysql_close($db);
?>
|
Ausgabe
MitgliedID / int / 11 / not_null primary_key auto_increment
MitgliedVorname / string / 40 /
MitgliedNachname / string / 40 /
Aufgabe / string / 40 /
Geburtsdatum / date / 10 /
|
Wie Sie sehen durchläuft die for-Schleife sämtliche Felder. Für jedes Feld werden Name, Typ, Länge und die Feldeigenschaften ausgegeben.
|
|
|
|
|
|
|