2009-08-18 16 views
6

Im tratando de crear una función, que devolverá una consulta mysql, que luego puede recorrer y manejar los resultados, pero parece no estar funcionando. Puede que ni siquiera esté haciendo esto de la manera correcta.Crear una función php para devolver los resultados de 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; 
} 

El error que recibo es

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

traté de cargar todo lo anterior en la función, pero sólo podría conseguirlo para devolver un único resultado cada vez. Como necesito manejar cada resultado, "pienso" que la manera anterior es cómo quiero hacerlo, pero avíseme si hay una manera mejor, o qué estoy haciendo mal.

Cuando repito la función con el nombre de usuario, obtengo lo siguiente;

Resource id #5 

Respuesta

9

Eliminar las comisas dobles alrededor del enlace variable $result.

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

Funcionó muy bien, gracias. ¿Qué estaba pasando allí exactamente? ¿Por qué la cotización de la variable de resultado lo arruinó? – mrpatg

+2

Consulte la respuesta de Tom a continuación. Debido a que usar comillas dobles significa que $ result fue lanzado a una cadena. – Pete

9

Poner $result entre comillas dobles significa que será lanzado en una cadena, y entonces ya no es del tipo 'recurso'. Intente en su lugar:

return $result; 
+2

+1, gracias por la explicación – Pete

Cuestiones relacionadas