In base ai commenti, sembra che il problema sia causato dall'utilizzo di require_once()
all'interno di una funzione.
Una delle due cose sta accadendo. O:
-
Hai già incluso
Connection.php
da qualche altra parte, quindi quando arrivi alla funzione, in realtà non è inclusa.. a causa di una volta parte direquire_once
.oppure...
-
è funzionando la prima volta che chiami la funzione, ma la seconda volta che la chiami, il file è già stato incluso e non viene più incluso.
Il problema è che quando il file viene incluso per la prima volta (supponendo che provenga da questa funzione), il $connection
viene creata nell'ambito della funzione e, come qualsiasi altra variabile di funzione, scompare alla fine della funzione. Quando chiami la funzione una seconda volta, l'inclusione non si verifica perché stai utilizzando require_once
.
Probabilmente potresti risolverlo chiamando require()
invece di require_once()
, ma ciò finirà per riconnettersi al database ogni volta che chiami la funzione, il che è un sovraccarico non necessario. È molto più semplice spostare l'inclusione all'esterno della funzione e passare la connessione alla funzione o utilizzarla come variabile globale.
Sarebbe simile a questo:
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());
}
Detto questo, ci sono 2 problemi principali con questo codice.
-
Stai usando
mysql_*
funzioni che sono deprecate e saranno presto rimosse dalle nuove versioni di PHP. Vedi questa domanda per maggiori dettagli:Perché dovrebben non uso le funzioni mysql_* in PHP?In realtà non è così difficile passare a qualcosa come
mysqli_*
functions invece - c'è un insieme di funzioni non oggetto che sono quasi identiche a quelle che stai usando ora. -
Stai includendo una variabile nella tua query senza eseguirne correttamente l'escape. Per lo meno dovresti chiamare
mysql_real_escape_string()
(omysqli_real_escape_string()
), ma una soluzione migliore consiste nell'esaminare le dichiarazioni preparate. Puoi trovare maggiori informazioni sulle istruzioni preparate qui:Come posso prevenire l'SQL injection in PHP?