Signatur
Beschreibung
mysqli_fetch_column() ist eine komfortable Hilfsfunktion, die den Wert einer bestimmten Spalte aus der nächsten Zeile einer Ergebnismenge extrahiert, ohne erst ein vollständiges Array oder Objekt abrufen zu müssen. Der optionale Parameter $column gibt den nullbasierten Index der gewünschten Spalte an (Standard: 0, also die erste Spalte).
Die Funktion ist besonders nützlich, wenn eine Abfrage genau einen Wert zurückgibt – etwa eine COUNT(*)- oder SUM()-Abfrage. Anstatt zunächst eine Zeile als Array zu holen und dann einen Index zu referenzieren, liefert mysqli_fetch_column() das Ergebnis in einem einzigen Schritt.
Gibt es keine weitere Zeile in der Ergebnismenge, wird false zurückgegeben. Da ein gültiger Spaltenwert false sein kann (wenn er einem booleschen FALSE entspricht), sollte der Rückgabewert mit dem strikten Vergleichsoperator === geprüft werden.
Die Funktion entspricht dem objektorientierten Aufruf $result->fetch_column().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | mysqli_result | Das mysqli_result-Objekt, das von einer Abfragefunktion wie mysqli_query() zurückgegeben wurde. |
|
| $column | int | 0 | Nullbasierter Index der Spalte, deren Wert zurückgegeben werden soll. 0 steht für die erste Spalte im Ergebnis. |
Rückgabewert
false zurückgegeben. Der Typ entspricht dem tatsächlichen Datentyp des Spaltenwertes (z. B. int für INTEGER-Spalten). NULL-Werte in der Datenbank werden als null zurückgegeben.Beispiele
Anzahl der Datensätze mit COUNT(*) ermitteln
<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'shop');
$result = $mysqli->query('SELECT COUNT(*) FROM products WHERE active = 1');
// Direkt den Zählwert aus der ersten Spalte holen
$count = $result->fetch_column();
echo "Aktive Produkte: " . $count;
$result->free();
$mysqli->close();
E-Mail-Adresse eines Nutzers anhand der ID abrufen
<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'mydb');
$stmt = $mysqli->prepare('SELECT email FROM users WHERE id = ?');
$userId = 7;
$stmt->bind_param('i', $userId);
$stmt->execute();
$result = $stmt->get_result();
$email = $result->fetch_column(); // erste (und einzige) Spalte
if ($email === false) {
echo "Kein Nutzer mit dieser ID gefunden.";
} else {
echo "E-Mail: " . htmlspecialchars($email);
}
$stmt->close();
$mysqli->close();
Mehrere Zeilen – einzelne Spalte iterieren
<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'shop');
$result = $mysqli->query('SELECT name FROM categories ORDER BY name');
$categories = [];
while (($name = $result->fetch_column()) !== false) {
$categories[] = $name;
}
echo implode(', ', $categories);
$result->free();
$mysqli->close();
// Wichtig · Fallstricke
Wichtig: Da false sowohl das Ende der Ergebnismenge als auch (theoretisch) einen booleschen Spaltenwert bedeuten kann, sollte der Vergleich immer mit === false erfolgen, nicht mit == false.
Verfügbarkeit: Die Funktion wurde in PHP 8.1.0 eingeführt. In älteren PHP-Versionen muss stattdessen mysqli_fetch_row() oder mysqli_fetch_array() genutzt und der gewünschte Index manuell extrahiert werden.
Sicherheit: Nutze stets Prepared Statements (mysqli_prepare()), wenn Benutzereingaben in die Abfrage einfließen, um SQL-Injection zu verhindern. mysqli_fetch_column() selbst ist sicher, aber die zugrunde liegende Abfrage muss es ebenfalls sein.