2008-09-26 13 views
1

Pour un nouveau projet que je fais en PHP, j'ai créé une classe SQLMethods pour me connecter à la base de données et effectuer des requêtes. Ce soir a été la première nuit où j'ai pu le tester (je l'ai écrit il y a environ une semaine et je l'ai oublié) et une erreur inattendue est survenue: Quand il appelait ma fonction ExecuteQuery(), il n'utilisait pas la base de données. sélectionné dans le constructeur.Étendue de la connexion à la base de données de classe PHP Problème

Le constructeur:

public function SQLMethods() { 
     $SQLConnection = mysql_connect($SQLDBAddress, $SQLUserName, $SQLPassword); 

     if (!$SQLConnection) { 
      die('Could not connect: ' . mysql_error()); 
     } 

     mysql_select_db($SQLDB, $SQLConnection); 
    } 

La fonction en question:

public function ExecuteQuery($Query) { 
     mysql_query($Query, $SQLConnection) or die('Could not perform query: ' . mysql_error()); 
    } 

Quelqu'un voit ce que la question pourrait être? La connexion se ferme-t-elle après l'achèvement du constructeur?

Répondre

7

vous devez déclarer SQLConnection $ dans votre classe, et vous devez vous référer comme

$this->SQLConnection 

et pas seulement SQLConnection $.

2

$SQLConnection n'existe pas dans la méthode ExecuteQuery.

Vous pouvez le passer directement en tant que paramètre à ExecuteQuery ou ajouter une propriété de classe sqlConnection définie dans le constructeur et accessible en tant que $this->sqlConnection dans vos méthodes de classe.

1

La variable $SQLConnectionExecuteQuery() essaie d'utiliser est créée dans une autre étendue. (La fonction SQLMethods).

La connexion se ferme lorsque le script PHP a fait son travail ou si vous fermez vous-même (si la connexion est faite dans ce script)

Vous devriez ignorer la variable $SQLConnection dans les ExecuteQuery comme indiqué par le php.net documentation

Si l'identificateur de lien n'est pas spécifié, le dernier lien ouvert par mysql_connect() est supposé.

Questions connexes