Problema de alcance de conexión de base de datos de clase PHP
-
02-07-2019 - |
Pregunta
Para un nuevo proyecto que estoy haciendo en PHP, he creado una clase SQLMethods para conectarme a la base de datos y realizar consultas. Esta noche fue la primera noche que pude probarlo (lo escribí hace aproximadamente una semana y me olvidé de él) y ocurrió un error inesperado: cuando estaba llamando a mi función ExecuteQuery (), no usaría la base de datos I seleccionado en el constructor.
El constructor:
public function SQLMethods() {
$SQLConnection = mysql_connect($SQLDBAddress, $SQLUserName, $SQLPassword);
if (!$SQLConnection) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db($SQLDB, $SQLConnection);
}
La función en cuestión:
public function ExecuteQuery($Query) {
mysql_query($Query, $SQLConnection) or die('Could not perform query: ' . mysql_error());
}
¿Alguien ve cuál podría ser el problema? ¿Se cierra la conexión después de que se completa el constructor?
Solución
debe declarar $ SQLConnection en su clase y debe referirse a él como
$this->SQLConnection
y no simplemente $ SQLConnection.
Otros consejos
$ SQLConnection
no existe dentro del método ExecuteQuery
.
Puede pasarlo directamente como parámetro a ExecuteQuery
, o agregar una propiedad de clase sqlConnection
que se establece en el constructor y se accede a ella como $ this- > sqlConnection
dentro de sus métodos de clase.
La variable $ SQLConnection
ExecuteQuery ()
que se intenta utilizar se crea dentro de otro ámbito. (La función SQLMethods
).
La conexión se cierra cuando el script PHP ha funcionado o si lo cierra usted mismo (si la conexión se realiza dentro de ese script)
Debería omitir la variable $ SQLConnection
dentro de ExecuteQuery
como se indica en la documentación de php.net
Si no se especifica el identificador del enlace, se asume el último enlace abierto por
mysql_connect ()
.