Feldinformationen
Folgende Funktionen liefern Informationen über die Felder der Ergebnisliste.
Funktion |
Beschreibung
|
mysql_fetch_fields |
Gibt ein Objekt zurück, dessen Eigenschaften die des Feldes darstellen. "$result" ist dabei das Ergebnislistenhandle, der optionale Parameter "$offset" bestimmt das Feld innerhalb des aktuellen Datensatzes, über das Informationen geholt werden.
$fieldobject = mysql_fetch_fields($result, [$offset])
|
Objekteigenschaft |
Beschreibung
|
$fieldobject->name |
Der Spaltenname.
|
$fieldobject->table |
Der Name der zugehörigen Tabelle.
|
$fieldobject->max_length |
Die maximale Länge der Spalte.
|
$fieldobject->not_null |
Gibt "1" ("TRUE") zurück, wenn "NULL" nicht erlaubt ist.
|
$fieldobject->primary_key |
Gibt "1" ("TRUE") zurück, wenn das Feld einen Primärschlüssel hat.
|
$fieldobject->unique_key |
Gibt "1" ("TRUE") zurück, wenn das Feld "UNIQUE" (eindeutig) ist.
|
$fieldobject->multiple_key |
Gibt "1" ("TRUE") zurück, wenn das Feld nicht "UNIQUE" (eindeutig) ist.
|
$fieldobject->numeric |
Gibt "1" ("TRUE") zurück, wenn das Feld einen numerischen Datentyp hat.
|
$fieldobject->blob |
Gibt "1" ("TRUE") zurück, wenn das Feld ein "BLOB"-Feld ist.
|
$fieldobject->type |
Gibt den Datentyp zurück. Der Rückgabewert ist eine Zeichenkette mit dem Namen, z. B. "blob" oder "int".
|
$fieldobject->unsigned |
Gibt "1" ("TRUE") zurück, wenn das Feld keine Vorzeichen zulässt.
|
$fieldobject->zerofill |
Gibt "1" ("TRUE") zurück, wenn das Feld standardmässig "0" enthält.
|
Achtung: Mit diesen Objekteigenschaften werden die definierten Eigenschaften des feldes ermittelt und nicht der tatsächliche oder vermeintliche Zustand . Beispielsweise ist "$fieldobject->unsigned" also "1", wenn das Feld negative Zahlen zulässt; es spielt keine Rolle, ob auch tatsächlich eine negative Zahl darin enthalten ist.
|
mysql_fetch_length |
Gibt ein Array zurück, das Elemente für jede Saplte der Ergebnisliste enthält. Jedes Element stellt dabei die Länge der Spalte in Byte dar. Damit lässt sich der Platzverbrauch oder die Nutzung von Variablen berechnen. Die Funktion kann nur verwendet werden, wenn vorher eine Ergebnisliste erstellt und mit "mysql_fetch_row" ausgelesen wurde.
|
mysql_field_seek |
Setzt den internen Feldzeiger auf ein bestimmtes Feld. Wird dann "mysql_fetch_fields" ohne den optionalen Parameter "$offset" verwendet, so gilt die mit "mysql_field_seek" ausgewählte Spalte.
$ok = mysql_field_seek($result, $offset);
|
|
mysql_field_name |
Gibt nur den Namen eines Feldes zurück.
|
mysql_field_len |
Gibt nur die Spaltenbreite (Anzahl der für die Ausgabe maximal benötigten Zeichen) eines Feldes zurück.
|
mysql_field_type |
Gibt nur den Datentyp eines Feldes zurück.
|
mysql_field_flag |
Gibt nur die zusätzlichen Eigenschaften eines Feldes zurück. Die Flags selbst sind Eigenschaften gemäss folgender Tabelle.
Feld |
Beschreibung
|
not_null |
Spalte akzeptiert keine Nullen.
|
primary_key |
Spalte ist ein Primärschlüssel
|
unique_key |
Spalte akzeptiert nur eindeutige Werte.
|
multiple_key |
Spalte akzeptiert auch mehrdeutige Werte.
|
blob |
Spalte ist vom Datentyp "BLOB".
|
unsigned |
Spalte akzeptiert Zahlen mit Vorzeichen.
|
zerofill |
Spalte ist standardmässig "0".
|
binary |
Spalte akzeptiert Binärtypen.
|
enum |
Spalte ist ein Aufzählungstyp.
|
auto_increment |
Spalte verfügt über die Funktion "auto increment".
|
timestamp |
Spalte enthält einen Zeitstempel.
|
Die Ergebnisliste kann mit der Funktion "explode" in ein Array umgewandelt werden, sodass gezielt einzelne Werte extrahiert werden könne.
$flags = mysql_field_flags ($result, $i);
$flag = explode(" ", $flags);
echo $flag[1] . "<br />\n";
|
|
Das folgende Skript "mysql_fieldinfo.php" zeigt einige dieser Funktionen im Einsatz.
<?php
## Name mysql_fieldinfo.php
include("open.inc.php");
$result = mysql_query("SELECT * FROM address");
$fields = mysql_num_fields($result);
$rows = mysql_num_rows($result);
$i = 0;
$table = mysql_field_table($result, $i);
echo "<p>Die Tabelle \"$table\" hat <b>$fields</b> Felder und ";
echo "<b>$rows</b> Datensätze.</p>\n";
echo "<p>Die Tabelle hat folgende Felder:</p>\n<p>";
while ($i < $fields)
{
$type = mysql_field_type ($result, $i);
$name = mysql_field_name ($result, $i);
$len = mysql_field_len ($result, $i);
$flags = mysql_field_flags ($result, $i);
echo "[" . $type . "] " . $name . " (" . $len . ") " . $flags . "<br />\n";
## Extraktion einzelner Werte
#$flag = explode(" ", $flags);
#echo $flag[1] . "<br />\n";
$i++;
}
echo "</p>\n";
mysql_close($connection);
?>
|
Die Tabelle "address" hat 10 Felder und 14 Datensätze.
Die Tabelle hat folgende Felder:
[int] custID (21) not_null primary_key auto_increment
[string] fname (50)
[string] sname (50)
[string] company (80)
[string] street (80)
[string] zip (6)
[string] city (40)
[string] telephone (40)
[string] telefax (40)
[string] email (50)
|
Tabellen- und Datenbankeigenschaften
Folgende Funktionen liefern Informationen über Datenbanken und Tabellen.
Funktion |
Beschreibung
|
mysql_field_table |
Gibt den Namen der Tabelle zu einem bekannten Feldnamen zurück. Diese Funktion ist nützlich, wenn in einer "SELECT"-Anweisung mit Aliasen und mehreren Tabellen gearbeitet wird und man nicht mehr weiss, aus welcher Tabelle die Daten stammen.
$i = 0;
$table = mysql_field_table($result, $i);
|
|
mysql_list_tables |
Ermittelt die Namen der Tabellen einer Datenbank.
|
mysql_tablename |
Gibt eine Namensliste zurück.
|
mysql_list_dbs |
Ermittelt die Namen der Datenbanken.
|
Das folgende Skript "mysql_tablenames.php" gibt eine Liste aller Tabellennamen der aktuellen Datenbank aus.
<?php
## Name mysql_tablenames.php
include("open.inc.php");
$result = mysql_list_tables($database);
$i = 0;
echo "<p>Tabellen in <b>$database</b>:</p>\n";
echo "<p>";
while ($i < mysql_num_rows($result))
{
$tablenames[$i] = mysql_tablename($result, $i);
echo $tablenames[$i] . "<br />\n";
$i++;
}
echo "</p>\n";
mysql_close($connection);
?>
|
Das folgende Skript "mysql_listdbs.php" gibt eine Liste aller Datenbanken auf dem aktuellen MySQL-Server aus.
<?php
## Name mysql_listdbs.php
include("open.inc.php");
$result = mysql_list_dbs($connection);
$i = 0;
echo "<p>Datenbanken auf <b>$server</b>:</p>\n";
echo "<p>";
while ($i < mysql_num_rows($result))
{
$tablenames[$i] = mysql_tablename($result, $i);
echo $tablenames[$i] . "<br />\n";
$i++;
}
echo "</p>\n";
mysql_close($connection);
?>
|