Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Aviso:mysql_query():o argumento fornecido não é um recurso válido do MySQL-Link


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:

  1. Você já incluiu Connection.php em outro lugar, então quando você chegar à função, ela não está realmente incluída.. por causa da uma vez parte de require_once .

    ou...

  2. É é 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.

  1. Você está usando o mysql_* 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 o mysqli_* 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.

  2. Você está incluindo uma variável em sua consulta sem escapar dela corretamente. No mínimo você deveria estar chamando mysql_real_escape_string() (ou mysqli_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?