# mysqli_result::fetch_fields

# mysqli_fetch_fields

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_fields -- mysqli_fetch_fields — Liefert ein Array von Objekten, die die Spalten einer Ergebnismenge darstellen

### Beschreibung

Objektorientierter Stil

public mysqli_result::fetch_fields(): array

Prozeduraler Stil

mysqli_fetch_fields(mysqli_result `$result`): array

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.

### Parameter-Liste

`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.

### Rückgabewerte

Gibt ein Array von Objekten zurück, die die Informationen über die Definition der Spalten enthalten.

Eigenschaften des Objekts
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.

### Beispiele

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

### Siehe auch

- mysqli_num_fields() - Ermittelt die Anzahl der Spalten in der Ergebnismenge
- mysqli_fetch_field_direct() - Ruft die Metadaten für eine einzelne Spalte ab
- mysqli_fetch_field() - Liefert die Metadaten der nächsten Spalte einer Ergebnismenge

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open