W3docs

info

Aprende a usar la función mysqli_info() en PHP para obtener información sobre la consulta ejecutada más recientemente en una conexión MySQLi.

Este artículo cubre la función mysqli_info() en PHP, que devuelve una cadena legible por humanos describiendo lo que hizo la consulta ejecutada más recientemente. Aprenderás qué devuelve la función, qué sentencias producen salida, cómo llamarla tanto en el estilo procedimental como en el orientado a objetos de MySQLi, y en qué se diferencia de funciones relacionadas como mysqli_affected_rows().

Qué devuelve mysqli_info()

mysqli_info() es una función integrada de PHP que devuelve una cadena de estado formateada para la última consulta ejecutada en una conexión determinada. La cadena es el mismo texto que el servidor MySQL reporta para la sentencia — está pensada para humanos, no para ser analizada sintácticamente.

Solo produce una cadena para sentencias que modifican o cargan múltiples filas. Para otras consultas (un SELECT simple, un CREATE TABLE, etc.) devuelve una cadena vacía o NULL. Las sentencias que producen una cadena son:

SentenciaEjemplo de cadena de salida
INSERT INTO ... SELECT ...Records: 3 Duplicates: 0 Warnings: 0
INSERT INTO ... VALUES (...),(...)Records: 2 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ...Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE ...Records: 3 Duplicates: 0 Warnings: 0
UPDATE ...Rows matched: 40 Changed: 40 Warnings: 0

Dado que el formato no es estable entre tipos de sentencias ni versiones de MySQL, trata la cadena como un valor de visualización. Para leer números individuales de forma programática, usa las funciones dedicadas — consulta mysqli_affected_rows() y mysqli_warning_count().

Sintaxis

mysqli_info() recibe el enlace devuelto por mysqli_connect():

// Procedural style
string mysqli_info(mysqli $link)

// Object-oriented style
string $mysqli->info

En la API orientada a objetos, info es una propiedad, no un método — nota que no hay paréntesis.

Cómo usar mysqli_info()

Llama a mysqli_info() en una conexión MySQLi válida justo después de ejecutar una consulta con mysqli_query(). Realiza la comprobación de estado antes de ejecutar la siguiente consulta, ya que cada consulta sobreescribe el estado anterior.

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

if (!$mysqli) {
    die("Connection failed: " . mysqli_connect_error());
}

// A multi-row INSERT produces a status string
$sql = "INSERT INTO users (name) VALUES ('Ann'), ('Bob'), ('Cara')";

if (mysqli_query($mysqli, $sql)) {
    echo mysqli_info($mysqli);
} else {
    echo "Query failed: " . mysqli_error($mysqli);
}

mysqli_close($mysqli);
?>

Para la inserción de tres filas anterior, el script imprime:

Records: 3  Duplicates: 0  Warnings: 0

Aquí Records es el número de filas que procesó la sentencia, Duplicates cuenta las filas que colisionaron con una clave única, y Warnings informa de los problemas no fatales ocurridos durante la ejecución.

Estilo orientado a objetos

La misma lógica usando la API MySQLi orientada a objetos lee la propiedad info:

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

if ($mysqli->connect_errno) {
    die("Connection failed: " . $mysqli->connect_error);
}

$mysqli->query("INSERT INTO users (name) VALUES ('Ann'), ('Bob'), ('Cara')");

echo $mysqli->info; // Records: 3  Duplicates: 0  Warnings: 0

$mysqli->close();
?>

mysqli_info() vs mysqli_affected_rows()

Es fácil confundirlas:

  • mysqli_info() devuelve una cadena formateada para mostrar y funciona solo para los tipos de sentencias listados anteriormente.
  • mysqli_affected_rows() devuelve un entero con el número de filas modificadas por INSERT, UPDATE, DELETE o REPLACE — úsala cuando necesites un número en tu código.

Si necesitas el recuento, nunca analices la cadena de mysqli_info(); llama directamente a mysqli_affected_rows().

Errores comunes

  • Un SELECT simple no devuelve nada. mysqli_info() está vacía para SELECT; para contar las filas devueltas usa mysqli_num_rows() en el conjunto de resultados.
  • El estado se reinicia en la siguiente consulta. Lee mysqli_info() inmediatamente después de la consulta que te interesa.
  • No analices la cadena. Su redacción cambia entre tipos de sentencias y versiones del servidor; usa las funciones dedicadas de recuento y advertencias para la lógica.

Conclusión

mysqli_info() es una forma rápida de obtener un resumen legible por humanos de lo que hizo la última consulta — cuántos registros se procesaron, cuántos eran duplicados y cuántas advertencias se produjeron. Úsala para registro y depuración, y recurre a mysqli_affected_rows() o mysqli_warning_count() cuando tu código necesite los números en sí. Para más información sobre cómo ejecutar consultas, consulta el resumen de PHP MySQLi.

Práctica

Práctica
¿Qué devuelve la función PHP mysqli_info()?
¿Qué devuelve la función PHP mysqli_info()?
Was this page helpful?