Op basis van de opmerkingen klinkt het alsof het probleem wordt veroorzaakt door het gebruik van require_once()
binnen een functie.
Een van de twee dingen gebeurt. Ofwel:
-
Je hebt
Connection.php
al opgenomen ergens anders, dus als je bij de functie komt, is deze niet echt opgenomen.. vanwege de eenmalige onderdeel vanrequire_once
.of...
-
Het is werkt de eerste keer dat u de functie aanroept, maar de tweede keer dat u deze aanroept, is het bestand al opgenomen en wordt het niet opnieuw opgenomen.
Het probleem is dat wanneer het bestand voor het eerst wordt opgenomen (ervan uitgaande dat dit van binnen deze functie is), de $connection
variabele wordt gemaakt in het functiebereik en is, net als elke andere functievariabele, aan het einde van de functie verdwenen. Wanneer u de functie een tweede keer aanroept, vindt de include niet plaats omdat u require_once
gebruikt .
U kunt dit waarschijnlijk oplossen door require()
. aan te roepen in plaats van require_once()
, maar dat zal uiteindelijk elke keer dat u de functie aanroept opnieuw verbinding maken met de database - wat veel onnodige overhead is. Het is veel schoner om de include buiten de functie te plaatsen en ofwel de verbinding door te geven aan de functie, of het als een globale variabele te gebruiken.
Dat zou er zo uitzien:
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());
}
Dat gezegd hebbende, er zijn 2 grote problemen met deze code.
-
Je gebruikt de
mysql_*
functies die verouderd zijn en binnenkort zullen worden verwijderd uit nieuwe versies van PHP. Zie deze vraag voor meer details:Waarom zou gebruik ik geen mysql_*-functies in PHP?Het is eigenlijk niet zo moeilijk om over te schakelen naar iets als de
mysqli_*
functies in plaats daarvan - er is een niet-object set functies die bijna identiek zijn aan wat u nu gebruikt. -
U neemt een variabele op in uw query zonder deze op de juiste manier te escapen. Je zou op zijn minst
mysql_real_escape_string()
. moeten aanroepen (ofmysqli_real_escape_string()
), maar een betere oplossing is om voorbereide verklaringen te bekijken. U kunt hier meer informatie over voorbereide verklaringen vinden:Hoe kan ik SQL-injectie in PHP voorkomen?