PDA

Ver la versión completa : Warning: mysql_fetch_array():



hckr
13-11-2011, 13:15
Buenas a todos :)

Yo tengo un archivo con funciones, y una de ellas es getIdUsuario, que dice así:


function getIdUsuario($usuario) {
$res = 0;
$consulta = "SELECT IDUSUARIO FROM usuarios WHERE NOMBRE='$usuario'";
$query = mysql_query($consulta);
$tupla = mysql_fetch_array($query);
if ($tupla != null) {
$res = $tupla["IDUSUARIO"];
}
return $res;
}

Se supone que obtiene la ID a partir del nombre de usuario...

El problema viene cuando en el archivo prueba.php pongo:


<?
$usuario="admin";
$idadmin = getIdUsuario($usuario);
while($idUsuario = mysql_fetch_array($idadmin)){
echo 'La id del usuario Admin es '.$idUsuario["IDUSUARIO"].' .';

}

?>

y me devuelve el error:


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in [RUTA] on line 49

A ver si alguien me puede ayudar... me estoy volviendo loco >.< he concatenado, ninguna variable vacía, en la BD no hay campos vacíos...

Un saludo.

hystd
13-11-2011, 14:03
Buenas, getIdUsuario no te devuelve una lista, sino un número, por lo que no tiene sentido ni llamar a mysql_fetch_array, ni iterar con un bucle while.

La solución a tu problema es:

<?
$usuario="admin";
$idadmin = getIdUsuario($usuario);
echo 'La id del usuario Admin es '.$idAdmin.' .';
?>

Un saludo.

hckr
13-11-2011, 14:04
Gracias, ya no me sale el error, pero siempre me muestra 0. Siempre va a mostrar el atributo de $res... puedo poner el mismo código de otra forma? Quiero que $res se defina en el If, pero no sé por qué no cambia...

Un saludo.

hckr
14-11-2011, 20:24
Resuelto, el fallo estaba en poner NOMBRE='$usuario' en vez de USUARIO='$usuario', en core.php.

De nuevo gracias a Hy, que me lo ha notificado :P