Liefert ein Array von Objekten, die die Spalten einer Ergebnismenge darstellen

# 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 function mysqli_result::fetch_fields(): array

Prozeduraler Stil

function 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