Bonjour,

Je suis ennoyé avec mysqli. Je n'arrive pas a détecter plusieurs cas d'erreurs sur la création d'instance de mysqli. Voila mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
try {
	$this->id_connexion = new mysqli($this->sql_server, $this->sql_server_login, $this->sql_server_password);
} catch(Exception $e) {
	echo $e->getMessage();
}
if ($this->id_connexion->connect_errno) {
	printf("Echec de la connexion: %s\n", $this->id_connexion->connect_error);
	//exit();
	return false;
}

J'ai 2 gros soucie. Le premier est que j'ai un gros warning avec le new msqli (args...) dont j'ai mis le code plus haut. Le warning exact est :
Warning: mysqli::mysqli(): in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\xxxmasquéxxx\src\support\database.php. Ce warning arrive lorsque la connexion a échoué, parce que le serveur MySQL ou l'un des autres paramètres est incorrect. Mon problème est que je n'intercepte pas ce warning, même avec le bloc try/catch mis plus haut. Comment faire pour l'intercepter et ne pas afficher ce Warning ? Je ne veux pas, vous vous en doutez, désactiver tous les warning avec une error_reporting(all): je veux l'intercepter.

Ma seconde question concerne le cas particulier où tous les paramètres sont vide : $this->sql_server, $this->sql_server_login, $this->sql_server_password, tous vides. Cela ne génère aucune erreur et je ne sais pas l'intercepter. Pour m'en sortir j'ai mis un gros hack : je teste si les paramètres sont vides, mais c'est bourrin je trouve. Est-ce que il y a mieux ? En particulier je pensais pouvoir intercepter ce cas particulier avec le connect_errno (voir le code juste au dessus) mais ca ne fonctionne pas bien lorsque, précisément, tous les champ sont vides. Comment faire ?


Note: le $this->id_connexion c'est l'id renvoyé par le new mysqli, vous l'avez compris.