Problème de portée de connexion de base de données de classe PHP
-
02-07-2019 - |
Question
Pour un nouveau projet que je réalise en PHP, j'ai créé une classe SQLMethods pour se connecter à la base de données et effectuer des requêtes. Ce soir, c’est la première nuit où j’ai pu le tester (je l’ai écrit il ya une semaine et je l’avais oublié) et une erreur inattendue s’est produite: lorsqu’elle appelait ma fonction ExecuteQuery (), elle n’utilisait pas la base de données. sélectionné dans le constructeur.
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());
}
Est-ce que quelqu'un voit ce que le problème pourrait être? La connexion se ferme-t-elle une fois le constructeur terminé?
La solution
vous devez déclarer $ SQLConnection dans votre classe et vous y référer
$this->SQLConnection
et pas simplement $ SQLConnection.
Autres conseils
$ SQLConnection
n'existe pas dans la méthode ExecuteQuery
.
Vous pouvez le transmettre 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.
La variable $ SQLConnection
ExecuteQuery ()
que vous essayez d'utiliser est créée dans une autre étendue. (Fonction SQLMethods
).
La connexion se ferme lorsque le script PHP a terminé son travail ou si vous le fermez vous-même (si la connexion est établie dans ce script)
Vous devez ignorer la variable $ SQLConnection
dans ExecuteQuery
, comme indiqué dans la documentation php.net
Si l'identifiant du lien n'est pas spécifié, le dernier lien ouvert par
mysql_connect ()
est utilisé.