Problema dell'ambito della connessione al database della classe PHP
-
02-07-2019 - |
Domanda
Per un nuovo progetto che sto realizzando in PHP ho creato una classe SQLMethods per connettermi al database ed eseguire query. Stasera è stata la prima notte che ho avuto modo di testarlo (l'ho scritto una settimana fa e me ne sono dimenticato) e si è verificato un errore imprevisto: quando chiamava la mia funzione ExecuteQuery (), non utilizzava il database I selezionato nel costruttore.
Il costruttore:
public function SQLMethods() {
$SQLConnection = mysql_connect($SQLDBAddress, $SQLUserName, $SQLPassword);
if (!$SQLConnection) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db($SQLDB, $SQLConnection);
}
La funzione in questione:
public function ExecuteQuery($Query) {
mysql_query($Query, $SQLConnection) or die('Could not perform query: ' . mysql_error());
}
Qualcuno vede quale potrebbe essere il problema? La connessione si chiude al termine del costruttore?
Soluzione
dovresti dichiarare $ SQLConnection nella tua classe e dovresti fare riferimento ad esso come
$this->SQLConnection
e non semplicemente $ SQLConnection.
Altri suggerimenti
$ SQLConnection
non esiste nel metodo ExecuteQuery
.
Puoi passarlo direttamente come parametro a ExecuteQuery
, oppure aggiungere una proprietà di classe sqlConnection
impostata nel costruttore e accessibile come $ this- > sqlConnection
all'interno dei metodi della tua classe.
La variabile $ SQLConnection
ExecuteQuery ()
che sta tentando di utilizzare viene creata in un altro ambito. (La funzione SQLMethods
).
La connessione si chiude quando lo script PHP ha funzionato o se lo si chiude da soli (se la connessione viene stabilita all'interno di quello script)
Dovresti saltare la variabile $ SQLConnection
in ExecuteQuery
come indicato dalla documentazione di php.net
Se l'identificatore del collegamento non viene specificato, viene assunto l'ultimo collegamento aperto da
mysql_connect ()
.