mysqli_result::fetch_fields

mysqli_fetch_fields

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_fields -- mysqli_fetch_fieldsLiefert 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
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, wie in der Tabellendefinition angegeben. Es ist zu beachten, dass diese Zahl (Bytes) je nach verwendetem Zeichensatz vom Wert in der Tabellendefinition (Zeichen) abweichen kann. Zum Beispiel hat der Zeichensatz utf8 3 Bytes pro Zeichen, so dass varchar(10) für utf8 (10*3) eine Länge von 30 zurückgibt, für latin1 (10*1) jedoch 10.
charsetnr Die Nummer (ID) des Zeichensatzes der Spalte
flags Ein Integer, der die Bit-Flags der Spalte darstellt
type Der für diese Spalte verwendete Datentyp
decimals Die Anzahl der verwendeten Dezimalstellen (bei Integer-Spalten)

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