Tratar la excepción: Warning: mysqli::__construct(): (HY000/2002)

publicado por: Anonymous

Este es el aviso que devuelve la clase mysqli cuando no logra conectarse a la base de datos definida en los parámetros enviados en la creación del objeto:

Warning: mysqli::__construct(): (HY000/2002): No se puede establecer
una conexión ya que el equipo de destino denegó expresamente dicha
conexión. in […]

Me gustaría tratar esta “excepción” como si te un error se tratara y he intentando este código:

    try{
        $this->conn=new mysqli($db[0],$db[1],$db[2],$db[3]);
    }
    catch (mysqli_sql_exception $e){
        throw $e;
    }

Lo que espero es que desaparezca del warning y muestre mi mensaje de error.

Estoy estudiando la documentación, pero no consigo dar con ello:

https://www.php.net/manual/en/language.errors.php7.php

Ya he probado con:

if(!$this->[email protected] mysqli($db[0],$db[1],$db[2],$db[3])){
    echo "No ha sido posible conectar con la base de datos,";
    echo "por favor espere o revise la configuración";
}

y tampoco… ¿alguna idea?

¡Gracias!

solución

Tienes que indicarle en el catch la excepción para luego coger el mensaje que lanza.

mysqli_report(MYSQLI_REPORT_STRICT);//Considera el warning como un error, y así tratar la excepción.

try {
    $mysqli = new mysqli('127.0.0.1','uesr','password','testDB');
    echo 'connect success';
} catch (Exception $e) {
    echo 'ERROR:'.$e->getMessage();
}

Puedes poner los mensajes personificados en el catch

Prueba de esta manera a ver si te es útil:

mysqli_report(MYSQLI_REPORT_STRICT);

try{
    $this->conn=new mysqli($db[0],$db[1],$db[2],$db[3]);
}
catch(Exception $e){
    echo "No ha sido posible conectar con la base de datos,";
    echo "por favor espere o revise la configuración";
}
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *