2 votes

Obtenir une erreur de connexion à la base de données dans une classe

Je n'avais pas réalisé qu'il existait un moyen OO d'utiliser mysqli, j'ai donc construit une classe appelée DB. Pendant __construct, elle prend le nom d'hôte, le nom d'utilisateur, le mot de passe et le nom de la base de données. Etant donné le code suivant :

$myDB = new DB("localhost", "user", "password", "database");
$myDBConnect = $myDB->connect();

if(!$myDBConnect) {
    echo "<strong>The following error has occurred: " . $myDB->getError();
}

La variable contient évidemment FALSE parce que cette if renvoie actuellement TRUE . Voici la méthode de la classe DB :

public function connect() {
    // Create connection
    $this->dbConnx = mysqli_connect($this->dbHost, $this->dbUsername, $this->dbPassword, $this->dbName);

    if(mysqli_connect_errno($this->dbConnx)) {
        $this->dbError = mysqli_error($this->dbConnx);
        return false;
    }
}

Je ne reçois aucun détail d'erreur. J'ai essayé d'ajouter or die(mysqli_error()); dans la méthode de connexion, mais elle se contente toujours d'afficher le texte du fichier dans lequel $myDB est instancié. J'ai également essayé des variations sur le code de rapport d'erreur, y compris l'absence d'argument dans la méthode mysqli_connect_errno() et en utilisant $this->dbError = mysqli_connect_error() avec et sans l'argument de la connexion.

Est-ce que cela complique inutilement la façon OO d'utiliser mysqli ? ou est-ce que je rate quelque chose de simple qui me permettra de continuer à utiliser le code que j'ai déjà ? Merci d'avance pour votre temps.

2voto

echo_Me Points 20305

Si n'est pas variable

       if(!$myDBConnect) {
      ^--remove variable sign here

E

votre connexion doit être

    $myDB = new mysqli("localhost", "user", "password", "database");

1voto

Elastic Lamb Points 308

Peut-être avez-vous oublié l'instruction return true dans la méthode "connect" ?

Vous devriez également utiliser PDO.

1voto

ironcito Points 715

Y connect() renvoie l'information suivante false en cas d'échec et rien en cas de succès, de sorte qu'il échouera toujours à l'étape de l'évaluation. if . Essayez d'ajouter return true; à la fin de cette fonction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X