Erreur SQLSTATE[42000] [1203]
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:
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 !