> Faqs > Solucionar errores de conexión a la base de datos que no se imprimen en pantalla, con PHP y mysql

Solucionar errores de conexión a la base de datos que no se imprimen en pantalla, con PHP y mysql

En el código siguiente:

<?php
    $db_host = "localhostt";
    $db_nombre = "prueba";
    $db_usuario = "root";
    $db_contraseña = "";

    $conexion = mysqli_connect($db_host, $db_usuario, $db_contraseña, $db_nombre);//en este orden

    if(mysqli_connect_errno()){
        echo ("Fallo al conectar con la BBDD");
        exit();
    }
?>

El problema es que aún con un error en la conexión no llega a impirimir el error que se ha producido, cómo es eso posible?

Respuestas

Revisa que tienes un error tipográfico en el nombre del host de la base de datos: En la línea donde defines $db_host, has escrito "localhostt" con una 't' adicional al final. El valor correcto generalmente es "localhost" a menos que hayas configurado un nombre de host personalizado, archivo de "hosts".

Si el script no está mostrando el mensaje de error a pesar de que la conexión falla, puede haber varias razones.

Configuración de visualización de errores en PHP

Si los errores no se están mostrando en tu entorno, puede ser debido a la configuración de PHP, que esté ocultando los errores.

En los servidores de desarrollo los errores de PHP suelen estar activados, para que aparezcan en la página, pero si publicas tu código en un servidor remoto, un alojamiento, los errores están siempre desactivados por seguridad.

Asegúrate de que la visualización de errores esté habilitada en tu archivo de configuración php.ini o temporalmente en tu script para depuración colocando las siguientes líneas al inicio de tu script:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Esto forzará a PHP a mostrar todos los errores pero debes tener cuidado de no dejarlo en entornos de producción por razones de seguridad.

Errores de conexión no capturados

La función mysqli_connect_errno() verifica si hubo un error al intentar establecer la conexión, pero no captura errores que ocurren después de establecer la conexión. Para esos casos, puedes usar mysqli_error($conexion) para obtener una descripción detallada del error.

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$db_host = "localhost"; // Asegúrate que es "localhost" y no "localhostt"
$db_nombre = "prueba";
$db_usuario = "root";
$db_contraseña = "";

$conexion = mysqli_connect($db_host, $db_usuario, $db_contraseña, $db_nombre);

if(mysqli_connect_errno()){
    echo "Fallo al conectar con la BBDD: " . mysqli_connect_error();
    exit();
}
?>

Revisa los log

Por último, podría ser útil revisar los logs de error de tu servidor web o de PHP para obtener más detalles sobre el problema.

Mira el códigio fuente de la página

Y otra cosa... si tu página tiene un diseño especial puede que aparezcan los mensajes de error pero que no se vean por culpa de que aparezcan por ejemplo debajo de otros elementos. Aqui la recomendación sería que veas directamente el código fuente HTML generado.

Agustín
255 6 15 14