Na podstawie komentarzy wygląda na to, że problem jest spowodowany użyciem require_once()
wewnątrz funkcji.
Dzieje się jedna z dwóch rzeczy. Albo:
-
Dodałeś już
Connection.php
gdzie indziej, więc kiedy dojdziesz do funkcji, tak naprawdę nie jest ona uwzględniana... z powodu razu częśćrequire_once
.lub...
-
To jest działa przy pierwszym wywołaniu funkcji, ale przy drugim wywołaniu plik został już dołączony i nie jest ponownie dołączany.
Problem polega na tym, że gdy plik jest dołączany po raz pierwszy (zakładając, że pochodzi z tej funkcji), $connection
zmienna jest tworzona w zakresie funkcji i jak każda inna zmienna funkcji znika na końcu funkcji. Kiedy wywołujesz funkcję po raz drugi, dołączanie nie następuje, ponieważ używasz require_once
.
Prawdopodobnie możesz to naprawić, wywołując require()
zamiast require_once()
, ale spowoduje to ponowne łączenie się z bazą danych za każdym razem, gdy wywołasz funkcję - co jest bardzo niepotrzebnym obciążeniem. O wiele czystsze jest po prostu przeniesienie dołączenia poza funkcję i albo przekazanie połączenia do funkcji, albo użycie go jako zmiennej globalnej.
To wyglądałoby tak:
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());
}
Biorąc to wszystko pod uwagę, są 2 główne problemy z tym kodem.
-
Używasz
mysql_*
funkcje, które są przestarzałe i wkrótce zostaną usunięte z nowych wersji PHP. Zobacz to pytanie, aby uzyskać więcej informacji:Dlaczego nie używam funkcji mysql_* w PHP?Właściwie nie jest tak trudno przełączyć się na coś takiego jak
mysqli_*
funkcje zamiast tego - istnieje nieobiektowy zestaw funkcji, które są prawie identyczne z tym, którego używasz teraz. -
Dołączasz zmienną do zapytania bez prawidłowego jej zmiany znaczenia. Przynajmniej powinieneś wywołać
mysql_real_escape_string()
(lubmysqli_real_escape_string()
), ale lepszym rozwiązaniem jest zajrzenie do przygotowanych zestawień. Więcej informacji na temat przygotowanych wyciągów znajdziesz tutaj:Jak mogę zapobiec wstrzykiwaniu SQL w PHP?