W3docs

errno

Aprende a usar mysqli_errno() en PHP para obtener el código de error numérico de la operación MySQLi más reciente en una conexión.

Este artículo cubre la función PHP mysqli_errno(), que devuelve el código de error numérico para la llamada más reciente en una conexión MySQLi. Aprenderás qué devuelve, cómo interpretar el código, en qué se diferencia de mysqli_error() y cómo usarla con los estilos procedimental y orientado a objetos de MySQLi.

Qué hace mysqli_errno()

mysqli_errno() es una función integrada de PHP que devuelve el código de error de la última función MySQLi ejecutada en una conexión determinada. Es la contrapartida programática de un mensaje legible por humanos: donde mysqli_error() te da una frase como "Table 'db.my_table' doesn't exist", mysqli_errno() te da el entero en bruto (en este caso, 1146) con el que puedes comparar en el código.

Sintaxis y valor de retorno

mysqli_errno(mysqli $mysqli): int
  • Parámetro$mysqli: una conexión devuelta por mysqli_connect() (procedimental) o new mysqli(...) (orientado a objetos).
  • Valor de retorno — el código de error de la última llamada en esa conexión, o 0 si no ocurrió ningún error. Verifica siempre el valor de retorno en lugar de asumir que hay un error.

¿Por qué un número? Los códigos numéricos son estables y fáciles de evaluar con condicionales. El texto de un mensaje de error puede cambiar entre versiones de MySQL o según el idioma, pero el código (p. ej., 1062 para una clave duplicada) permanece igual — por eso los códigos son lo que debes verificar en la lógica if/switch.

Uso de mysqli_errno() (estilo procedimental)

Requiere una conexión MySQLi válida como único argumento. A continuación se muestra un patrón típico:

¿Cómo usar la función mysqli_errno()?

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

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

$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);

if (!$result) {
    $error_code = mysqli_errno($mysqli);
    echo "Failed to execute query. Error code: " . $error_code;
    exit();
}

mysqli_close($mysqli);
?>

Aquí primero verificamos que la conexión fue exitosa, luego ejecutamos una consulta con mysqli_query(). Si la consulta falla (!$result), mysqli_errno($mysqli) nos proporciona el código numérico para que podamos registrarlo y salir.

Combinar errno con mysqli_error()

En la práctica, casi siempre querrás tanto el código (para evaluar con condicionales) como el mensaje (para registrar o mostrar). Usa mysqli_errno() junto con mysqli_error():

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

$result = mysqli_query($mysqli, "SELECT * FROM missing_table");

if (!$result) {
    $code    = mysqli_errno($mysqli);   // e.g. 1146
    $message = mysqli_error($mysqli);   // e.g. "Table 'database.missing_table' doesn't exist"

    // Branch on the stable numeric code, not the message text.
    if ($code === 1146) {
        echo "The table is missing. ";
    }
    echo "[$code] $message";
}

mysqli_close($mysqli);
?>

Estilo orientado a objetos

Si creas la conexión con new mysqli(...), accede a $mysqli->errno como propiedad (y $mysqli->error para el mensaje) en lugar de la función procedimental:

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

if (!$mysqli->query("SELECT * FROM missing_table")) {
    echo "Error " . $mysqli->errno . ": " . $mysqli->error;
}

$mysqli->close();
?>

Ambos estilos reportan el mismo código — elige el que coincida con el resto de tu base de código. Consulta PHP MySQLi para obtener una descripción general de la extensión.

Códigos de error comunes de MySQL

Algunos códigos que encontrarás con frecuencia al gestionar errores de MySQLi:

CódigoSignificado
1045Acceso denegado para el usuario (nombre de usuario/contraseña incorrectos)
1049Base de datos desconocida
1062Entrada duplicada para una clave única/primaria
1146La tabla no existe
1264Valor fuera de rango para una columna
1452Falla en la restricción de clave foránea

Para la lista completa, consulta la referencia oficial de errores del servidor MySQL.

Uso avanzado

La función mysqli_errno() también puede usarse en escenarios más avanzados. Al trabajar con múltiples conexiones, debes pasar el objeto MySQLi específico a la función para recuperar el código de error de esa conexión en particular. A continuación se muestra un ejemplo:

Uso avanzado de PHP mysqli_errno()

<?php
$mysqli1 = mysqli_connect("localhost", "username", "password", "database1");
$mysqli2 = mysqli_connect("localhost", "username", "password", "database2");

if (!$mysqli1 || !$mysqli2) {
    die("One or more connections failed.");
}

$query = "SELECT * FROM my_table";
$result1 = mysqli_query($mysqli1, $query);
$result2 = mysqli_query($mysqli2, $query);

if (!$result1) {
    $error_code = mysqli_errno($mysqli1);
    echo "Failed to execute query on connection 1. Error code: " . $error_code;
    exit();
}

if (!$result2) {
    $error_code = mysqli_errno($mysqli2);
    echo "Failed to execute query on connection 2. Error code: " . $error_code;
    exit();
}

mysqli_close($mysqli1);
mysqli_close($mysqli2);
?>

En este ejemplo, creamos dos objetos MySQLi y nos conectamos a dos bases de datos MySQL diferentes. Luego ejecutamos la misma consulta usando cada conexión y almacenamos el resultado en una variable. Verificamos si hubo un error en cada consulta usando la condición !$result. Si hubo un error, llamamos a mysqli_errno() para el objeto MySQLi correspondiente para obtener el código de error asociado a esa conexión específica. Luego mostramos el código de error y salimos del script.

Nota: mysqli_errno() reporta el error para una conexión específica. Con múltiples conexiones abiertas, el código está vinculado al objeto de conexión que pases — así que asegúrate siempre de pasar el correcto.

Funciones relacionadas

Conclusión

mysqli_errno() devuelve el código de error numérico de la operación más reciente en una conexión MySQLi, o 0 cuando no hubo error. Combínala con mysqli_error() para obtener el mensaje, evalúa el código numérico estable con condicionales y pasa el objeto de conexión correcto cuando haya varios abiertos — esa es la base de un manejo robusto de errores en MySQLi.

Práctica

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