2009-08-18 15 views
6

Sto cercando di creare una funzione, che restituirà una query mysql, che posso quindi eseguire il ciclo e gestire i risultati, ma non sembra funzionare. Potrei anche non farlo nel modo giusto.Creazione di una funzione php per restituire risultati mysql

function GetAccounts($username){ 
require("dbconn.php"); 
$result = mysql_query("SELECT * FROM `accounts` WHERE `username` = '$username' ") or trigger_error(mysql_error()); 
return "$result"; 
} 

$result = GetAccounts($username); 
while($row = mysql_fetch_array($result)){ 
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
$theusername = $row['theusername']; 
$thepassword = $row['thepassword']; 
echo $theusername; 
} 

L'errore ricevo è

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource 

Ho provato caricare tutto quanto sopra in funzione, ma potrebbe ottenere solo per restituire un unico risultato ogni volta. Dal momento che ho bisogno di gestire ogni risultato, penso che il modo in cui sopra è come voglio farlo, ma fammi sapere se c'è un modo migliore, o che cosa sto facendo male.

Quando echo la funzione con il nome utente, ottengo il seguente;

Resource id #5 

risposta

9

Rimuovere le virgolette doppie attorno alla variabile di collegamento $result.

function GetAccounts($username){ 
    require("dbconn.php"); 
    $result = mysql_query("SELECT * FROM `accounts` WHERE `username` = '$username' ") or trigger_error(mysql_error()); 
    return $result; 
} 
+0

Ha funzionato benissimo, grazie. Cosa stava succedendo lì esattamente? Perché quotare la variabile risultato lo ha incasinato? – mrpatg

+2

Vedere la risposta di Tom qui sotto. Perché usare virgolette doppie significa che $ result è stato castato su una stringa. – Pete

9

Mettere $result tra virgolette significa che sarà gettato in una stringa, e allora non è più di tipo 'risorse'. Prova invece:

return $result; 
+2

+1, grazie per la spiegazione – Pete

Problemi correlati