Въз основа на коментарите изглежда, че проблемът е причинен от използването на require_once()
вътре във функция.
Случва се едно от двете неща. Или:
-
Вече сте включили
Connection.php
някъде другаде, така че когато стигнете до функцията, тя всъщност не е включена.. поради веднъж част отrequire_once
.или...
-
Тона работи първия път, когато извикате функцията, но втория път, когато я извикате, файлът вече е включен и не се включва отново.
Проблемът е, че когато файлът е включен за първи път (ако приемем, че е от тази функция), $connection
променливата се създава в обхвата на функцията и като всяка друга променлива на функцията я няма в края на функцията. Когато извикате функцията втори път, включването не се случва, защото използвате require_once
.
Вероятно бихте могли да поправите това, като извикате require()
вместо require_once()
, но това ще доведе до повторно свързване с базата данни всеки път, когато извикате функцията - което е много ненужни режийни разходи. Много по-чисто е просто да преместите включването извън функцията и или да прехвърлите връзката във функцията, или да я използвате като глобална променлива.
Това би изглеждало така:
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());
}
Като се има предвид всичко това, има 2 основни проблема с този код.
-
Използвате
mysql_*
функции, които са остарели и скоро ще бъдат премахнати от новите версии на PHP. Вижте този въпрос за повече подробности:Защо трябва Не използвам ли mysql_* функции в PHP?Всъщност не е толкова трудно да преминете към нещо като
mysqli_*
функции вместо това - има необектен набор от функции, които са почти идентични с това, което използвате сега. -
Включвате променлива в заявката си, без да я избягвате правилно. Най-малкото трябва да извикате
mysql_real_escape_string()
(илиmysqli_real_escape_string()
), но по-доброто решение е да разгледате подготвени изявления. Можете да намерите повече информация за подготвените изявления тук:Как мога да предотвратя SQL инжектирането в PHP?