Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: sergio98 en 17 Junio 2014, 14:57 pm



Título: Problema script mysql_fetch_array()
Publicado por: sergio98 en 17 Junio 2014, 14:57 pm
El script me da error:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/u815225632/public_html/check-login.php on line 17

Código:
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<?php
$user = $_REQUEST['user'];
$password = $_REQUEST['password'];
$co = mysql_connect("---host---", "---usuario---", "---password---");
mysql_select_db("users", $co);
$se = mysql_query("select USER,PASSWORD from users where USER=$user", $co);
echo $user;
echo "<br />";
echo $password;
echo "<br />";
if ($re = mysql_fetch_array($se)) {
echo $re['USER'];
echo $re['PASSWORD'];
if ($re['PASSWORD'] == $password) {
echo "OK!";
} else {
echo "NO!";
}
}
?>
</body>
</html>

Gracias y espero q me ayudéis a solucionarlo


Título: Re: Problema script mysql_fetch_array()
Publicado por: marko1985 en 17 Junio 2014, 15:21 pm
tienes que pasar otro parámetro a mysql_fetch_array y dejarlo así

Código
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Login</title>
  5. </head>
  6. <body>
  7. <?php
  8. $user = $_REQUEST['user'];
  9. $password = $_REQUEST['password'];
  10. $co = mysql_connect("---host---", "---usuario---", "---password---");
  11. mysql_select_db("users", $co);
  12. $se = mysql_query("select USER,PASSWORD from users where USER='$user'", $co);
  13. echo $user;
  14. echo "<br />";
  15. echo $password;
  16. echo "<br />";
  17. if ($re = mysql_fetch_array($se, MYSQL_ASSOC)) {
  18. echo $re['USER'];
  19. echo $re['PASSWORD'];
  20. if ($re['PASSWORD'] == $password) {
  21. echo "OK!";
  22. } else {
  23. echo "NO!";
  24. }
  25. }
  26. ?>
  27. </body>
  28. </html>

En el ejemplo 3 de esta página verás lo que te comento http://es1.php.net/manual/es/function.mysql-fetch-array.php

PD: También creo que te faltan las comillas simples en la variable de la consulta $user


Título: Re: Problema script mysql_fetch_array()
Publicado por: engel lex en 17 Junio 2014, 15:24 pm
 Marco no es eso, ese parametro es opcional

Porque probablemente el query haya venido vacío y si no retorna nada "se" será false, usa un if para comprobar si no retornó valores

Por cierto ya esta desaconsejado usar la extensión de mysql, en su ligar usar mysqli o mysql pdo, mas info en php.net


Título: Re: Problema script mysql_fetch_array()
Publicado por: marko1985 en 17 Junio 2014, 15:27 pm
Marco no es eso, ese parametro es opcional

Porque probablemente el query haya venido vacío y si no retorna nada "se" será false, usa un if para comprobar si no retornó valores

Por cierto ya esta desaconsejado usar la extensión de mysql, en su ligar usar mysqli o mysql pdo, mas info en php.net

Fíjate en el error que le sale:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/u815225632/public_html/check-login.php on line 17

También le faltan las comillas simples en el la variable.

Que lo pruebe, es sólo una humilde opinion. Es cierto que está desaconsejado, pero antes de meterse en Clases y objetos debería de funcionar correctamente esto.


Título: Re: Problema script mysql_fetch_array()
Publicado por: sergio98 en 17 Junio 2014, 15:32 pm
Gracias por las respuestas... pero nada, me sigue tirando el mismo error.

He probado a poner las comillas simples y también el valor opcional, ¿alguna idea más?
Gracias


Título: Re: Problema script mysql_fetch_array()
Publicado por: engel lex en 17 Junio 2014, 15:37 pm
Has un vardump a "se" dime que retornó


Título: Re: Problema script mysql_fetch_array()
Publicado por: marko1985 en 17 Junio 2014, 15:39 pm
Gracias por las respuestas... pero nada, me sigue tirando el mismo error.

He probado a poner las comillas simples y también el valor opcional, ¿alguna idea más?
Gracias

¿$user y $pass te salen en el navegador? USER y PASS los tienes con mayúsculas en la bbdd.

Prueba sustituyendo la consulta así,

Código
  1. $se = mysql_query("SELECT * FROM users where USER='$user'", $co);


Título: Re: Problema script mysql_fetch_array()
Publicado por: sergio98 en 17 Junio 2014, 15:56 pm
Has un vardump a "se" dime que retornó

Código:
var_dump($se);
Booleano(false)

Y sí, las variables $user y $password me aparecen en el navegador.

Con el script que me has dado me sigue sin ir.


Título: Re: Problema script mysql_fetch_array()
Publicado por: engel lex en 17 Junio 2014, 16:04 pm
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/u815225632/public_html/check-login.php on line 17

la funcion esperaba una variable conteniendo un resource, pero si el query no retorna nada, da false... y false es un booleano, asi que causa error, muestra de eso...

Código:
var_dump($se);
Booleano(false)

revisa si en tu base de datos estan lo datos bien escritos usa el phpmyadmin para hacer el query


Título: Re: Problema script mysql_fetch_array()
Publicado por: EFEX en 18 Junio 2014, 03:57 am
Esto pasa cuando no verificas primero que se realize la conexion con la db.. conectar con db > no se pudo conectar? > bump error(login incorrecto o whatever).


Título: Re: Problema script mysql_fetch_array()
Publicado por: engel lex en 18 Junio 2014, 07:04 am
Esto pasa cuando no verificas primero que se realize la conexion con la db.. conectar con db > no se pudo conectar? > bump error(login incorrecto o whatever).

tampoco porque el query requiere una variable de tipo recurso, si se rebota la conexión el error lo diera mysql_query


Título: Re: Problema script mysql_fetch_array()
Publicado por: JorgeEMX en 19 Junio 2014, 04:30 am
tampoco porque el query requiere una variable de tipo recurso, si se rebota la conexión el error lo diera mysql_query

Incorrecto, no porque no se establezca conexión con la Base de Datos ocurrirá un error con mysql_query. Yo si creo que ese sea el error, o no estableces bien la conexión o el usuario con el que te has logueado, usando mysql_connect, no tiene permisos suficientes para realizar la consulta.