W3docs

field_count

Erfahren Sie mehr über mysqli_field_count() in PHP – eine Funktion, die die Spaltenanzahl der zuletzt ausgeführten Abfrage zurückgibt.

Die Funktion mysqli_field_count() gibt die Anzahl der Spalten zurück, die von der zuletzt ausgeführten Abfrage auf einer MySQLi-Verbindung erzeugt wurden. Sie ist eine schnelle Möglichkeit, die Struktur eines Ergebnisses zu überprüfen, ohne das Ergebnisobjekt zu behalten – praktisch nach einem SELECT oder nach einer Abfrage, bei der Sie die Spaltenanzahl vor dem Abrufen von Zeilen validieren möchten.

Dieser Artikel behandelt die Syntax der Funktion, ihre Parameter und den Rückgabewert, den Unterschied zur eng verwandten mysqli_num_fields() sowie ausführbare Beispiele (sowohl prozedural als auch objektorientiert).

Syntax

// Procedural style
mysqli_field_count(mysqli $mysql): int

// Object-oriented style
$mysqli->field_count: int   // property, read as $mysqli->field_count
TeilBeschreibung
$mysqlEin Verbindungs-Link, der von mysqli_connect() zurückgegeben wird (nur prozeduraler Stil).
RückgabewertEin int – die Anzahl der Spalten für die letzte Abfrage auf dieser Verbindung. Gibt 0 zurück, wenn die letzte Anweisung kein Ergebnis lieferte (zum Beispiel INSERT, UPDATE oder DELETE).

Beachten Sie, dass die objektorientierte Form eine schreibgeschützte Eigenschaft ($mysqli->field_count) ist und kein Methodenaufruf.

Verwendung von mysqli_field_count()

Sie rufen die Funktion auf einer aktiven Verbindung direkt nach der Ausführung einer Abfrage auf. Es ist nicht notwendig, das Ergebnisobjekt zu erfassen – mysqli_field_count() liest die Spaltenanzahl direkt aus dem Zustand der letzten Abfrage der Verbindung.

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

if (mysqli_connect_errno()) {
    die("Connection failed: " . mysqli_connect_error());
}

$query = "SELECT id, name, email FROM users";
mysqli_query($mysqli, $query);

$num_fields = mysqli_field_count($mysqli);
printf("Number of columns: %d\n", $num_fields);  // Number of columns: 3

mysqli_close($mysqli);
?>

Hier stellen wir eine Verbindung mit mysqli_connect() her und prüfen mysqli_connect_errno(), um bei einem Fehler sauber abzubrechen. Wir führen ein SELECT aus, das drei Spalten zurückgibt, und lesen dann die Spaltenanzahl aus der Verbindung. Die Ausgabe lautet Number of columns: 3.

mysqli_field_count() vs mysqli_num_fields()

Beide Funktionen beantworten dieselbe Frage – „wie viele Spalten?" – lesen die Antwort jedoch aus unterschiedlichen Quellen:

  • mysqli_field_count($mysqli) nimmt die Verbindung und gibt die Spaltenanzahl der zuletzt ausgeführten Abfrage zurück. Verwenden Sie diese Funktion, wenn Sie das Ergebnisobjekt nicht haben (oder nicht möchten).
  • mysqli_num_fields($result) nimmt ein Ergebnisobjekt, das von mysqli_query() zurückgegeben wurde. Verwenden Sie diese Funktion, wenn Sie das Ergebnis bereits haben und es gleich durchlaufen möchten.
<?php
$mysqli = mysqli_connect("localhost", "user", "pass", "shop");

$result = mysqli_query($mysqli, "SELECT id, title, price FROM products");

// From the result object:
echo mysqli_num_fields($result), "\n";   // 3

// From the connection (same last query):
echo mysqli_field_count($mysqli), "\n";  // 3

mysqli_free_result($result);
mysqli_close($mysqli);
?>

Häufiger Anwendungsfall: Spaltenanzahl validieren

Ein typischer Anwendungsfall ist das Absichern von Code, der eine bestimmte Ergebnisstruktur erwartet – zum Beispiel das Bestätigen, dass eine Abfrage die erwarteten Spalten zurückgegeben hat, bevor mit dem Lesen begonnen wird:

<?php
$mysqli = mysqli_connect("localhost", "user", "pass", "shop");

mysqli_query($mysqli, "SELECT id, name FROM categories");

if (mysqli_field_count($mysqli) === 2) {
    echo "Result has the expected 2 columns.\n";
} else {
    echo "Unexpected column count.\n";
}

mysqli_close($mysqli);
?>

Wichtige Hinweise

  • Die Funktion gibt Spalten zurück, nicht Zeilen. Für die Anzahl der von einem Schreibvorgang betroffenen Zeilen verwenden Sie mysqli_affected_rows(); für einen Auto-Increment-Schlüssel nach einem Insert verwenden Sie mysqli_insert_id().
  • Die Funktion spiegelt nur die letzte Abfrage auf der Verbindung wider. Wenn Sie zwischendurch eine weitere Abfrage ausführen, wird die Anzahl aktualisiert.
  • Eine Nicht-Ergebnis-Anweisung (INSERT/UPDATE/DELETE) setzt die Anzahl auf 0.

Fazit

mysqli_field_count() ist eine einfache Möglichkeit, die Spaltenanzahl der zuletzt ausgeführten Abfrage auf einer MySQLi-Verbindung zu lesen – ohne das Ergebnisobjekt zu behalten. Nutzen Sie diese Funktion zur Validierung der Ergebnisstruktur und bevorzugen Sie mysqli_num_fields(), wenn Sie das Ergebnisobjekt bereits haben. Weitere verwandte Funktionen zur Ergebnisverarbeitung finden Sie unter mysqli_query() und mysqli_fetch_field().

Übungen

Übung
Was ist die Funktion von 'field_count' in PHP?
Was ist die Funktion von 'field_count' in PHP?
Was this page helpful?