Classe gestion Mysql

Eléphant du PHP | 147 Messages

19 nov. 2007, 03:21

Bonjour

J'espere que mon poste trouvera sa place ici

Je tente de développer une classe qui me servira d'interface afin d'executer mes requete SQL

Je rencontre un problème dans l'interception des erreurs de connection.

Voila la partie du code concerné :
class MySQL {
  var $serveur;
  var $utilisateur;
  var $password;
  var $bd;
  var $connection_SQL;
  var $resultat;
  var $connection_ok;
  var $erreur;
  var $debug;
  var $op_OK;
  
  //contructeur
  function __construct($serveur, $utilisateur, $password, $bd, $debug){
      //init de mes variable
      
      $this->Connection();
  }
 
  function Connection(){
    if ($this->connection_ok == 0){
      $this->connection_SQL = @mysql_connect($this->serveur,
                                             $this->utilisateur,
                                             $this->password
                                            );
      echo $this->connection_SQL;
      if (! $this->connection_SQL){
        $this->Mysql_erreur();
      }
      else {
        $this->Select_bd();
      }
    }
  }
 
  function Mysql_erreur(){
    if ($this->debug){
      $this->erreur = @mysql_error($this->connection_SQL);
    }
    $this->op_OK = false;
  }
}
Le problème survient quand ma base SQL est arête, la fonction Mysql_erreur() n'alimente pas ma variable erreur

Si vous avez des remarques sur ma manière de procéder n'hesitez pas je me lance dans l'objet et toute remarque pourai m'aider

Mammouth du PHP | 1029 Messages

21 nov. 2007, 08:57

Bonjour,

si tu es en php5, je ferais plus comme ceci :
<?php
class MySQL {
	private $serveur;
	private $utilisateur;
	private $password;
	private $bd;
	private $connection_SQL;
	private $resultat;
	private $connection_ok;
	private $erreur;
	private $debug;
	private $op_OK;

	//contructeur
	function __construct($serveur, $utilisateur, $password, $bd, $debug)
	{
		//init de mes privateiable
		$this->serveur = $serveur;
		$this->utilisateur = $utilisateur;
		$this->password = $password;
		$this->bd = $bd;
		$this->debug = $debug;
		
		$this->Connection();
	}

	function Connection()
	{
		if ($this->connection_ok == 0)
		{
			$this->connection_SQL = @mysql_connect($this->serveur,
			$this->utilisateur,
			$this->password
			);
			
			echo $this->connection_SQL;
			
			if (! $this->connection_SQL)
			{
				$this->Mysql_erreur();
			}
			
			else
			{
				$this->Select_bd();
			}
		}
	}

	function Mysql_erreur()
	{
		if ($this->debug)
		{
			$this->erreur = @mysql_error($this->connection_SQL);
		}

		$this->op_OK = false;
	}
}

?>

Le question serait, "tu es sur que la variable $this->debug est initialisé à true"?
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 259 Messages

21 nov. 2007, 14:25

Hello,

Dans un premier temps, si tu enlevais les @ devant les fonctions mysql, tu aurais peut-être déja des messages d'erreur un peu plus parlants.

Chercher des erreurs en les masquant, c'est plus compliqué...

Eléphant du PHP | 147 Messages

22 nov. 2007, 13:45

En effet si le masque les erreurs je vais avoir des soucis.

Je teste dès que possible et je mets un résolu.