Según los comentarios, parece que el problema se debe al uso de require_once()
dentro de una función.
Una de dos cosas está sucediendo. O bien:
-
Ya has incluido
Connection.php
en otro lugar, así que cuando llegas a la función, en realidad no está incluida... debido a la una vez parte derequire_once
.o...
-
es funcionando la primera vez que llama a la función, pero la segunda vez que la llama, el archivo ya se ha incluido y no se vuelve a incluir.
El problema es que cuando el archivo se incluye por primera vez (suponiendo que sea dentro de esta función), la $connection
La variable se crea en el ámbito de la función y, como cualquier otra variable de función, desaparece al final de la función. Cuando llama a la función por segunda vez, la inclusión no ocurre porque está usando require_once
.
Probablemente podría arreglar esto llamando a require()
en lugar de require_once()
, pero eso terminará volviendo a conectarse a la base de datos cada vez que llame a la función, lo que es una gran cantidad de gastos generales innecesarios. Es mucho más limpio simplemente mover la inclusión fuera de la función y pasar la conexión a la función o usarla como una variable global.
Eso se vería así:
require_once('Connection.php');
function getResult() {
global $connection;
$findQuery = "SELECT * FROM `Keys` WHERE `ID` = '$gID'";
$findResult = mysql_query($findQuery, $connection) or die(mysql_error());
$resultRow = mysql_fetch_assoc($findResult) or die(mysql_error());
}
Dicho todo esto, hay 2 problemas importantes con este código.
-
Estás usando
mysql_*
funciones que están en desuso y pronto se eliminarán de las nuevas versiones de PHP. Consulte esta pregunta para obtener más detalles:¿Por qué no debería ¿No uso las funciones mysql_* en PHP?En realidad, no es tan difícil cambiar a algo como
mysqli_*
funciones en su lugar:hay un conjunto de funciones que no son objetos que son casi idénticas a las que está usando ahora. -
Estás incluyendo una variable en tu consulta sin escaparla correctamente. Como mínimo, debería llamar a
mysql_real_escape_string()
(omysqli_real_escape_string()
), pero una mejor solución es buscar declaraciones preparadas. Puede encontrar más información sobre declaraciones preparadas aquí:¿Cómo puedo evitar la inyección SQL en PHP?