Baserat på kommentarerna låter det som att problemet orsakas av att du använder require_once()
inuti en funktion.
En av två saker händer. Antingen:
-
Du har redan inkluderat
Connection.php
någon annanstans, så när du kommer till funktionen är den faktiskt inte inkluderad.. på grund av en gång del avrequire_once
.eller...
-
Det är fungerar första gången du anropar funktionen, men andra gången du anropar den har filen redan inkluderats och tas inte med igen.
Problemet är att när filen först inkluderas (förutsatt att det kommer från den här funktionen), $connection
variabel skapas i funktionsomfånget, och liksom alla andra funktionsvariabler, är den borta i slutet av funktionen. När du anropar funktionen en andra gång händer inte inkluderingen eftersom du använder require_once
.
Du kan förmodligen fixa detta genom att anropa require()
istället för require_once()
, men det kommer att sluta återansluta till databasen varje gång du anropar funktionen - vilket är en hel del onödig overhead. Det är mycket renare att bara flytta inkluderingen utanför funktionen och antingen skicka kopplingen till funktionen eller använda den som en global variabel.
Det skulle se ut så här:
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());
}
Med detta sagt finns det två stora problem med den här koden.
-
Du använder
mysql_*
funktioner som är föråldrade och snart kommer att tas bort från nya versioner av PHP. Se den här frågan för mer information:Varför bör Använder jag inte mysql_*-funktioner i PHP?Det är faktiskt inte så svårt att byta till något som
mysqli_*
funktioner istället - det finns en uppsättning funktioner utan objekt som är nästan identiska med det du använder nu. -
Du inkluderar en variabel i din fråga utan att undvika den ordentligt. Du bör åtminstone anropa
mysql_real_escape_string()
(ellermysqli_real_escape_string()
), men en bättre lösning är att titta på förberedda uttalanden. Du kan hitta mer information om förberedda uttalanden här:Hur kan jag förhindra SQL-injektion i PHP?