(PHP 5, PHP 7, PHP 8)
mysqli_result::fetch_fields -- mysqli_fetch_fields — Liefert ein Array von Objekten, die die Spalten einer Ergebnismenge darstellen
Objektorientierter Stil
Prozeduraler Stil
Diese Funktion erfüllt den gleichen Zweck wie die Funktion mysqli_fetch_field(), mit dem einzigen Unterschied, dass die Spalten als Array von Objekten zurückgegeben werden, anstatt für jede Spalte ein einzelnes Objekt zurückzugeben.
result
Nur bei prozeduralem Aufruf: Ein von mysqli_query(), mysqli_store_result(), mysqli_use_result() oder mysqli_stmt_get_result() zurückgegebenes mysqli_result-Objekt.
Gibt ein Array von Objekten zurück, die die Informationen über die Definition der Spalten enthalten.
Eigenschaft | Beschreibung |
---|---|
name | Der Name der Spalte |
orgname | Der ursprüngliche Name der Spalte, falls ein Alias angegeben wurde |
table | Der Name der Tabelle, zu der diese Spalte gehört (falls nicht berechnet) |
orgtable | Der ursprüngliche Name der Tabelle, falls ein Alias angegeben wurde |
def | Nicht verwendet; immer eine leere Zeichenkette |
db | Der Name der Datenbank |
catalog | Nicht verwendet; immer "def" |
max_length |
Die maximale Breite der Spalte für die Ergebnismenge. Seit PHP 8.1 ist
dieser Wert immer 0 .
|
length |
Die Breite der Spalte in Bytes. Bei Zeichenkettenspalten hängt der
Längenwert vom Zeichensatz der Verbindung ab. Ist der Zeichensatz z. B.
ein Ein-Byte-Zeichensatz wie latin1 , beträgt der
Längenwert für eine SELECT 'abc' -Abfrage 3. Ist der
Zeichensatz ein Multibyte-Zeichensatz wie utf8mb4 ,
bei dem die Zeichen bis zu 4 Bytes umfassen, beträgt der Längenwert 12.
|
charsetnr | Die Nummer des Zeichensatzes der Spalte |
flags | Ein Integer, der die Bit-Flags der Spalte darstellt |
type | Der für diese Spalte verwendete Datentyp |
decimals | Bei numerischen Spalten die Anzahl der Dezimalstellen, bei Zeitspalten die Genauigkeit der Sekundenbruchteile. |
Beispiel #1 Objektorientierter Stil
<?php
$mysqli = new mysqli("127.0.0.1", "root", "foofoo", "sakila");
/* Verbindung überprüfen */
if ($mysqli->connect_errno) {
printf("Verbindung fehlgeschlagen: %s\n", $mysqli->connect_error);
exit();
}
foreach (array('latin1', 'utf8') as $charset) {
// Zeichensatz ändern, um dessen Auswirkung auf einige Werte
// (z. B. die Länge in Bytes) zu zeigen
$mysqli->set_charset($charset);
$query = "SELECT actor_id, last_name from actor ORDER BY actor_id";
echo "======================\n";
echo "Zeichensatz: $charset\n";
echo "======================\n";
if ($result = $mysqli->query($query)) {
/* Informationen über alle Spalten abrufen */
$finfo = $result->fetch_fields();
foreach ($finfo as $val) {
printf("Name: %s\n", $val->name);
printf("Tabelle: %s\n", $val->table);
printf("max. Länge: %d\n", $val->max_length);
printf("Länge: %d\n", $val->length);
printf("Zeichensatz-Nr.: %d\n", $val->charsetnr);
printf("Flags: %d\n", $val->flags);
printf("Typ: %d\n\n", $val->type);
}
$result->free();
}
}
$mysqli->close();
?>
Beispiel #2 Prozeduraler Stil
<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "sakila");
/* Verbindung überprüfen */
if (mysqli_connect_errno()) {
printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error());
exit();
}
foreach (array('latin1', 'utf8') as $charset) {
// Zeichensatz ändern, um dessen Auswirkung auf einige Werte
// (z. B. die Länge in Bytes) zu zeigen
mysqli_set_charset($link, $charset);
$query = "SELECT actor_id, last_name from actor ORDER BY actor_id";
echo "======================\n";
echo "Zeichensatz: $charset\n";
echo "======================\n";
if ($result = mysqli_query($link, $query)) {
/* Informationen über alle Spalten abrufen */
$finfo = mysqli_fetch_fields($result);
foreach ($finfo as $val) {
printf("Name: %s\n", $val->name);
printf("Tabelle: %s\n", $val->table);
printf("max. Länge: %d\n", $val->max_length);
printf("Länge: %d\n", $val->length);
printf("Zeichensatz-Nr.: %d\n", $val->charsetnr);
printf("Flags: %d\n", $val->flags);
printf("Typ: %d\n\n", $val->type);
}
mysqli_free_result($result);
}
}
mysqli_close($link);
?>
Die obigen Bespiele erzeugen folgende Ausgabe:
====================== Zeichensatz: latin1 ====================== Name: actor_id Tabelle: actor max. Länge: 3 Länge: 5 Zeichensatz-Nr.: 63 Flags: 49699 Typ: 2 Name: last_name Tabelle: actor max. Länge: 12 Länge: 45 Zeichensatz-Nr.: 8 Flags: 20489 Typ: 253 ====================== Zeichensatz: utf8 ====================== Name: actor_id Tabelle: actor max. Länge: 3 Länge: 5 Zeichensatz-Nr.: 63 Flags: 49699 Typ: 2 Name: last_name Tabelle: actor max. Länge: 12 Länge: 135 Zeichensatz-Nr.: 33 Flags: 20489