Com base nos comentários, parece que o problema é causado pelo uso de
require_once()
dentro de uma função. Uma das duas coisas está acontecendo. Ou:
-
Você já incluiuConnection.php
em outro lugar, então quando você chegar à função, ela não está realmente incluída.. por causa da uma vez parte derequire_once
.
ou...
-
É é funcionando na primeira vez que você chama a função, mas na segunda vez que você a chama, o arquivo já foi incluído e não é incluído novamente.
O problema é que quando o arquivo é incluído pela primeira vez (supondo que seja de dentro desta função), o
$connection
A variável é criada no escopo da função e, como qualquer outra variável de função, desaparece no final da função. Quando você chama a função uma segunda vez, a inclusão não acontece porque você está usando require_once
. Você provavelmente poderia corrigir isso chamando
require()
em vez de require_once()
, mas isso acabará se reconectando ao banco de dados toda vez que você chamar a função - o que é uma sobrecarga desnecessária. É muito mais simples mover o include para fora da função e passar a conexão para a função ou usá-la como uma variável global. Isso ficaria assim:
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());
}
Tudo o que foi dito, há 2 grandes problemas com este código.
-
Você está usando omysql_*
funções que estão obsoletas e em breve serão removidas das novas versões do PHP. Veja esta pergunta para mais detalhes:Por que deveria 'não uso funções mysql_* em PHP?
Na verdade, não é tão difícil mudar para algo como omysqli_*
funções em vez disso - há um conjunto de funções não-objeto que são quase idênticos ao que você está usando agora.
-
Você está incluindo uma variável em sua consulta sem escapar dela corretamente. No mínimo você deveria estar chamandomysql_real_escape_string()
(oumysqli_real_escape_string()
), mas uma solução melhor é examinar as declarações preparadas. Você pode encontrar mais informações sobre declarações preparadas aqui:Como posso evitar injeção de SQL em PHP?