field_count
Aprende a usar mysqli_field_count() en PHP para obtener el número de columnas de la consulta más reciente en una conexión MySQLi.
La función mysqli_field_count() devuelve el número de columnas producidas por la consulta más reciente ejecutada en una conexión MySQLi. Es una forma rápida de inspeccionar la estructura de un conjunto de resultados sin conservar el objeto resultado — un control práctico tras ejecutar un SELECT, o tras una consulta cuyo número de columnas se desea validar antes de obtener las filas.
Este artículo cubre la sintaxis de la función, sus parámetros y valor de retorno, cómo se diferencia de la estrechamente relacionada mysqli_num_fields(), y ejemplos ejecutables (tanto en estilo procedimental como orientado a objetos).
Sintaxis
// Procedural style
mysqli_field_count(mysqli $mysql): int
// Object-oriented style
$mysqli->field_count: int // property, read as $mysqli->field_count| Parte | Descripción |
|---|---|
$mysql | Un enlace de conexión devuelto por mysqli_connect() (solo estilo procedimental). |
| Valor de retorno | Un int — el número de columnas de la última consulta en esa conexión. Devuelve 0 cuando la última instrucción no generó un conjunto de resultados (por ejemplo, INSERT, UPDATE o DELETE). |
Ten en cuenta que la forma orientada a objetos es una propiedad de solo lectura ($mysqli->field_count), no una llamada a método.
Cómo usar mysqli_field_count()
Se llama a la función en una conexión activa justo después de ejecutar una consulta. No es necesario capturar el objeto resultado — mysqli_field_count() lee el número de columnas directamente del estado de la última consulta de la conexión.
<?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);
?>Aquí nos conectamos con mysqli_connect() y comprobamos mysqli_connect_errno() para salir limpiamente en caso de fallo. Ejecutamos un SELECT que devuelve tres columnas y luego leemos el número de columnas desde la conexión. La salida es Number of columns: 3.
mysqli_field_count() vs mysqli_num_fields()
Estas dos funciones responden la misma pregunta — "¿cuántas columnas?" — pero la leen desde lugares diferentes:
mysqli_field_count($mysqli)toma la conexión e informa las columnas de la consulta más reciente. Úsala cuando no tienes (o no quieres) el objeto resultado.mysqli_num_fields($result)toma un objeto resultado devuelto pormysqli_query(). Úsala cuando ya tienes el resultado y estás a punto de iterarlo.
<?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);
?>Caso de uso común: validar el número de columnas
Un uso típico es proteger el código que espera una estructura de resultado específica — por ejemplo, confirmar que una consulta devolvió las columnas de las que dependes antes de empezar a leerlas:
<?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);
?>Aspectos a tener en cuenta
- Informa sobre columnas, no sobre filas. Para el número de filas afectadas por una escritura, usa
mysqli_affected_rows(); para una clave de auto-incremento tras una inserción, usamysqli_insert_id(). - Solo refleja la última consulta en la conexión. Si ejecutas otra consulta en medio, el conteo se actualiza.
- Una instrucción que no genera resultado (
INSERT/UPDATE/DELETE) deja el conteo en0.
Conclusión
mysqli_field_count() es una forma ligera de leer el número de columnas de la consulta más reciente en una conexión MySQLi — sin necesidad de conservar el objeto resultado. Úsala para validar la estructura de un resultado, y prefiere mysqli_num_fields() cuando ya tienes el objeto resultado. Para explorar las funciones relacionadas con el manejo de resultados, consulta mysqli_query() y mysqli_fetch_field().