Warning: mysql_connect() [function.mysql-conn

Fermé
itachi2255 Messages postés 17 Date d'inscription mercredi 25 août 2010 Statut Membre Dernière intervention 21 octobre 2011 - 25 août 2010 à 04:50
Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 - 25 août 2010 à 18:54
Bonjour,

je debute en php et j'ai passé un bon moment à trouver une solution pour un message d'erreur qui apparait quand je tente de me conecter à ma bdd!
j'ai fais 3 page index.php , MySQL.class.php et MySQLException.class.php

code index:
<?php

/**
* Utilisation de la classe
*/
include ("MySQL.class.php");

include ("MySQLException.class.php");


try
{
$Mysql = new Mysql('localhost', 'base', 'login', '');
$Resulats = $Mysql->TabResSQL('SELECT login,password FROM user');

foreach ($Resulats as $Valeur)
{
echo $Valeur['login'];
echo $Valeur['password'];
}
}
catch (MySQLExeption $e)
{
echo $e -> RetourneErreur();
}
?>

*************************
code MySQL.class.php
<?php

class Mysql
{
private
$Serveur = '',
$Bdd = '',
$Identifiant = '',
$Mdp = '',
$Lien = '',
$Debogue = true,
$NbRequetes = 0;

/**
* Constructeur de la classe
* Connexion aux serveur de base de donnée et sélection de la base
*
* $Serveur = L'hôte (ordinateur sur lequel Mysql est installé)
* $Bdd = Le nom de la base de données
* $Identifiant = Le nom d'utilisateur
* $Mdp = Le mot de passe
*/
public function __construct($Serveur = 'localhost', $Bdd = 'base', $Identifiant = 'root', $Mdp = '')
{
$this->Serveur = $Serveur;
$this->Bdd = $Bdd;
$this->Identifiant = $Identifiant;
$this->Mdp = $Mdp;
$this->Lien=mysql_connect($this->Serveur, $this->Identifiant, $this->Mdp);

if(!$this->Lien && $this->Debogue)
throw new MySQLExeption('Erreur de connexion au serveur MySql!!!');

$Base = mysql_select_db($this->Bdd,$this->Lien);

if (!$Base && $this->Debogue)
throw new MySQLExeption('Erreur de connexion à la base de donnees!!!');
}

/**
* Retourne le nombre de requêtes SQL effectué par l'objet
*/
public function RetourneNbRequetes()
{
return $this->NbRequetes;
}

/**
* Envoie une requête SQL et récupère le résultât dans un tableau pré formaté
*
* $Requete = Requête SQL
*/
public function TabResSQL($Requete)
{
$i = 0;
$Ressource = mysql_query($Requete,$this->Lien);
$TabResultat=array();
if (!$Ressource and $this->Debogue) throw new MySQLExeption('Erreur de requête SQL!!!');
while ($Ligne = mysql_fetch_assoc($Ressource))
{
foreach ($Ligne as $clef => $valeur) $TabResultat[$i][$clef] = $valeur;
$i++;
}
mysql_free_result($Ressource);
$this->NbRequetes++;
return $TabResultat;
}

/**
* Retourne le dernier identifiant généré par un champ de type AUTO_INCREMENT
*
*/
public function DernierId()
{
return mysql_insert_id($this->Lien);
}

/**
* Envoie une requête SQL et retourne le nombre de table affecté
*
* $Requete = Requête SQL
*/
public function ExecuteSQL($Requete)
{
$Ressource = mysql_query($Requete,$this->Lien);
if (!$Ressource and $this->Debogue) throw new MySQLExeption('Erreur de requête SQL!!!');
$this->NbRequetes++;
$NbAffectee = mysql_affected_rows();
return $NbAffectee;
}
}
?>

*************************
code MySQLException.class.php
<?php

/**
* Gestion des erreurs avec les exeptions
*/
class MySQLExeption extends Exception
{
public function __construct($Msg) {
parent :: __construct($Msg);
}

public function RetourneErreur() {
$msg = '<div><strong>' . $this->getMessage() . '</strong>';
$msg .= ' Ligne : ' . $this->getLine() . '</div>';
return $msg;
}
}
?>
*******************

le probleme c'est quand je lance j'ai toujour le message d'erreur
"Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'login'@'localhost' (using password: NO) in C:\wamp\www\classe\MySQL.class.php"

est-ce que vous pouvez m'aider??

5 réponses

itachi2255 Messages postés 17 Date d'inscription mercredi 25 août 2010 Statut Membre Dernière intervention 21 octobre 2011 1
25 août 2010 à 17:32
j'ai reussi a reglé le probleme c'est tout bete ^^
c'est au niveau de la structure l'appel du constructeur de la classe mysl il fallais juste mettre
$Mysql = new Mysql($Serveur = 'localhost', $Bdd = 'base', $Identifiant = 'root', $Mdp = '');
merci qd meme ;-)
1
Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
25 août 2010 à 18:54
Ouais enfin ton code il est ultra moche et pas clair.. En une boucle, tu définis 3 fois tes variables... C'est quoi l'intérêt?
0
Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
25 août 2010 à 09:32
Bonjour,

Ca, c'est un code pompé auquel tu ne comprend pas grand chose malgré les commentaires.. Pourquoi forcément passer par de la POO? y'a pas vraiment de plus value, surtout dans le cas d'une connexion à une BDD unique.. Fait plus simple, et plus "à ta portée". Bref:
class Mysql 
{ 
private 
$Serveur = '', 
$Bdd = '', 
$Identifiant = '', 
$Mdp = '', 
$Lien = '', 
$Debogue = true, 
$NbRequetes = 0; 
//Ces valeurs sont les constantes que tu utiliseras lors de l'utilisation de la méthode "construct".

/** 
* Constructeur de la classe 
* Connexion aux serveur de base de donnée et sélection de la base 
* 
* $Serveur = L'hôte (ordinateur sur lequel Mysql est installé) 
* $Bdd = Le nom de la base de données 
* $Identifiant = Le nom d'utilisateur 
* $Mdp = Le mot de passe 
*/ 
public function __construct($Serveur = 'localhost', $Bdd = 'base', $Identifiant = 'root', $Mdp = '') 
//Cette ligne me hérisse les poils.. Peut-être que ça marche (j'y crois pas), mais c'est une hérésie que de déclarer des variables quand on a besoin de leur valeur. Sans compter que ces variables sont déjà définies plus haut (en gras). Les valeurs à leur donner sont donc à remplir plus haut.
{ 
$this->Serveur = $Serveur; 
$this->Bdd = $Bdd; 
$this->Identifiant = $Identifiant; 
$this->Mdp = $Mdp; 
$this->Lien=mysql_connect($this->Serveur, $this->Identifiant, $this->Mdp); 
//C'est donc cette ligne qui foire vu que tes variables sont définies à la oneagain, voir pas du tout.

if(!$this->Lien && $this->Debogue) 
throw new MySQLExeption('Erreur de connexion au serveur MySql!!!'); 

$Base = mysql_select_db($this->Bdd,$this->Lien); 

if (!$Base && $this->Debogue) 
throw new MySQLExeption('Erreur de connexion à la base de donnees!!!'); 
} 


En regardant ton code que j'ai commenté, tu dois voir où ce situe l'erreur (grave à mon sens), et donc pouvoir la corriger facilement. Poste ici si malgré tout tu ne trouves pas, mais explique moi ce que tu ne comprend pas...
0
itachi2255 Messages postés 17 Date d'inscription mercredi 25 août 2010 Statut Membre Dernière intervention 21 octobre 2011 1
25 août 2010 à 14:28
je pense que le probleme viens de cette fonction mais j'ai verifier le code et tout est normal a mon sens.
l'appel dans la page index est correct aussi !
je suis aller meme a remplacer le constructeur de la classe et mis juste la requete avec les valeurs de la cnx a la base et c'est toujours pareil !!!
alors je comprends toujours pas d'où cela peux venir
merci de votre aide
0
Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
Modifié par Apatik le 25/08/2010 à 16:39
Remplace
$Serveur = '',  
$Bdd = '',  
$Identifiant = '', 


par
$Serveur = 'localhost',  
$Bdd = '',  
$Identifiant = 'root', 


et

public function __construct($Serveur = 'localhost', $Bdd = 'base', $Identifiant = 'root', $Mdp = '')  

Par
public function __construct($Serveur, $Bdd, $Identifiant, $Mdp)  


Question. A quoi servent les variables "static" que tu déclare au début de ta classe si tu leur donnes de nouvelles valeur durant la construction?
Live free, learn free, help free, Happy Hacking!
Plus que tout en informatique, l'erreur est humaine.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
itachi2255 Messages postés 17 Date d'inscription mercredi 25 août 2010 Statut Membre Dernière intervention 21 octobre 2011 1
25 août 2010 à 17:19
nn j'avais deja essayer ca mais toujour le meme probeleme !! je pense ke c un probleme logiciel rahhhh car je vois ps d'erreur
sinon pr les variable c des initialiation ke je vais utiliser par suite pr creer des session
0