Bonjour,

Je me retrouve depuis quelques temps confrontés à une erreur que je ne parviens pas à résoudre. Il s'agit de l'erreur SQLSTATE [42000] [1203] dont le message est "L'utilisateur %s possède déjà plus de 'max_user_connections' connections actives".

Je comprends pourquoi j'ai cette erreur. En faite, à chacune des opérations qui nécessite une connexion à la base de donnée, je l'enregistre dans une page que j'ai appelé functionsSQL.php. Dans cette page, j'ai donc toutes mes fonctions qui doit se connecter à la base de donnée plus une fonction connexionbdd() qui permet de m'y connecter.

Pour exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
<?php
/**
 * Fonction de connexion à la base de donnée
 */
function connexionbdd()
{
	$type = 'mysql';
	$host = 'localhost';
	$db = 'zeldapla2';
	$login = 'root';
	$passwd = 'root';
 
	try
	{
		$bdd = new PDO($type.':host='.$host.';dbname='.$db, $login, $passwd);
	}
	catch (PDOException $e)
	{
		echo 'La connexion a échoué.<br />';
		echo 'Informations : [', $e->getCode(), '] ', $e->getMessage(); // On affiche le n° de l'erreur ainsi que le message
	}
	catch (Exception $e)
	{
		die('Erreur SQL : '.$e->getMessage());
	}
	return $bdd;
}
 
/**
 * Fonction permettant à un utilisateur de se connecter sur le site
 */
function connexionSite($pseudo, $passwd)
{
	$db = connexionbdd();
	$sql = 'SELECT COUNT(*), M.id, M.email, M.rang, P.peuple, P.niveau
			FROM membres M, participants P
			WHERE P.id_membre = M.id
				AND pseudo = :pseudo
				AND passwd = :passwd';
 
	$req = $db->prepare($sql)
		or die(print_r('Erreur SQL : <br />'.$sql.'<br />'.$db->errorInfo()));
 
	$req->bindValue(':pseudo', $pseudo);
	$req->bindValue(':passwd', $passwd);
 
	$req->execute();
 
	$db = null;
	return $req->fetch();
}
?>
A première vue, le souci ne m'a pas semblé évident mais on m'a dit que mettre ma variable $db à null ne détruisait pas l'objet. Elle ne faisait que détruire ses références. J'ai donc tenté plusieurs solutions à partir de cette là mais à chaque fois, je reviens à rouvrir la connexion et la refermé en la mettant à null.

J'espère que vous serez m'éclairez sur la bonne marche à suivre.

Merci d'avance !