Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema con mysql_fetch_array

Estas en el tema de problema con mysql_fetch_array en el foro de PHP en Foros del Web. Hola amigos!, buenas tardes! este es mi inicio en foros del web! tengo un problema con el mysql_fetch_array m no me da ningun valor al ...

  #1 (permalink)  
Antiguo 20/07/2013, 06:37
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
problema con mysql_fetch_array

Hola amigos!, buenas tardes! este es mi inicio en foros del web!
tengo un problema con el mysql_fetch_array m no me da ningun valor al hacer la consulta para un login de usuario. es un codigo que tengo en otra pagina y funciona perfectamente, pero este, que es exactamente igual no va.. y no se por que..., el resultado es siempre "Datos incorrectos" del ultimo echo.
El archivo connect.php es la conec a la bd conde tengo la funcion db_connect() que luego la llamo mas abajo...
Bueno un saludo a todos y si alguno me pudiera ayudar le agradezco mucho!


<?
session_start();
?>
<?

require_once("connect.php");

$email= strip_tags($_POST['email']);
$passwd= strip_tags(sha1($_POST['passwd']));

db_connect();

$result = mysql_query('SELECT * FROM user_final
WHERE email="'.mysql_real_escape_string($_POST['email']).'"
AND passwd = password("'.mysql_real_escape_string($_POST['passwd']).'")');


if($existe = mysql_fetch_array($result))
{
$id = $existe['id_usu'];
$usu=$existe['username'];
$_SESSION['autenticado'] = 'si';
$_SESSION['id'] = $id;

echo "Hola $usu!!!";

echo '<script>alert("logeado!");location.href="index.ph p"</script>';
}
else
{
echo 'Datos incorrectos...';
}
?>
  #2 (permalink)  
Antiguo 20/07/2013, 07:10
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con mysql_fetch_array

comprueba que $result contiene algo

Código PHP:
var_dump($result); 
en vez de

Código PHP:
if($existe=mysql_fetch_array($result)) 
prueba con

Código PHP:
if (! empty ($result) )
{
while (
$existe mysql_fetch_array($result))
{
$id $existe['id_usu'];
$usu=$existe['username'];
$_SESSION['autenticado'] = 'si';
$_SESSION['id'] = $id;

echo 
"Hola ".$usu."!!!";

echo 
'<script>alert("logeado!");location.href="index.ph p"</script>'
}
}
else
{
echo 
'Datos incorrectos...';

di si te sirvió o no
  #3 (permalink)  
Antiguo 20/07/2013, 07:32
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

Hola Buenas, gracias por tu mensaje!
mira lo que la respuesta de antes era Datos incorrectos..., ahora le escribí lo que me has pasado y no imprime nada, y tampoco me envía a la pag de entrada.
y con respecto a lo de $result, si tiene valor..
estoy pensando que quizas tenga algo mal en la bd , pero veo todos los campos y estan bien..
todavia no logro dar con la clave..
  #4 (permalink)  
Antiguo 20/07/2013, 07:56
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con mysql_fetch_array

si es posible pon aquí el resultado del var_dump($result); a ver qué te devuelve.
  #5 (permalink)  
Antiguo 20/07/2013, 08:02
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

me devuelve esto --> resource(11) of type (mysql result)
  #6 (permalink)  
Antiguo 20/07/2013, 08:06
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

estoy pensando que igual es un tema de configuracion de php. estoy usando el 5.4
igual hay un problema con eso..
  #7 (permalink)  
Antiguo 20/07/2013, 08:09
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con mysql_fetch_array

Cita:
Iniciado por matiasmat Ver Mensaje
me devuelve esto --> resource(11) of type (mysql result)
creo que el problema lo tienes en las comillas de la consulta

pruebala así

Código PHP:
$result mysql_query("SELECT * FROM user_final
WHERE email='"
.mysql_real_escape_string($_POST['email'])."'
AND passwd = password('"
.mysql_real_escape_string($_POST['passwd'])."'))"
a ver qué tal
  #8 (permalink)  
Antiguo 20/07/2013, 08:16
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

mmm...
tampoco hay caso, sigue igual...
es curioso por que tengo uno igual, pero conectado a otra base de datos de otro hosting y si que funciona..
  #9 (permalink)  
Antiguo 20/07/2013, 08:30
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con mysql_fetch_array

Cita:
Iniciado por matiasmat Ver Mensaje
mmm...
tampoco hay caso, sigue igual...
es curioso por que tengo uno igual, pero conectado a otra base de datos de otro hosting y si que funciona..
vale, cuando abres php así <?

debes escribirlo por completo <?php

a ver si es eso.

tampoco entiendo qué es db_connect();
  #10 (permalink)  
Antiguo 20/07/2013, 08:35
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

tampoco , sigue igual...

db_connect(); es una funcion para llamar a la base de datos que tengo en el archivo
connect.php, que llamo mas arriba con --> require_once("connect.php");

ya no se que mas hacer con esto, igual busco orto script, por que no le veo la solucion..
  #11 (permalink)  
Antiguo 20/07/2013, 08:39
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con mysql_fetch_array

Cita:
Iniciado por matiasmat Ver Mensaje
tampoco , sigue igual...

db_connect(); es una funcion para llamar a la base de datos que tengo en el archivo
connect.php, que llamo mas arriba con --> require_once("connect.php");

ya no se que mas hacer con esto, igual busco orto script, por que no le veo la solucion..
¿db_connect(); tiene los parámetros de conexión a la base de datos (ip, usuario, contraseña y base de datos con la que trabajas)?
  #12 (permalink)  
Antiguo 20/07/2013, 08:44
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

mira, es asi tal cual:

<?php
function db_connect()
{
$result = mysql_connect("mysql.hostinger.es", "mi_usuario", "contraseña");
mysql_query("'SET NAMES 'ISO-8859-1'");
if (!$result)
return false;
if (!mysql_select_db("base_de_datos"))

echo "no se puede conectar a la base de datos";
return false;

return $result;
}
?>
  #13 (permalink)  
Antiguo 20/07/2013, 08:45
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

no me habia dado cuenta, pero la variable $result de este archivo no es la misma que la del otro archivo. la cambiare a ver que pasa
  #14 (permalink)  
Antiguo 20/07/2013, 08:46
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

no, sigue con lo mismo
  #15 (permalink)  
Antiguo 20/07/2013, 08:58
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con mysql_fetch_array

Cita:
Iniciado por matiasmat Ver Mensaje
mira, es asi tal cual:

<?php
function db_connect()
{
$result = mysql_connect("mysql.hostinger.es", "mi_usuario", "contraseña");
mysql_query("'SET NAMES 'ISO-8859-1'");
if (!$result)
return false;
if (!mysql_select_db("base_de_datos"))

echo "no se puede conectar a la base de datos";
return false;

return $result;
}
?>
ok

comenta el código que hemos tratado aquí y prueba el siguiente código

Código PHP:
<?php
session_start
();

$emailstrip_tags($_POST['email']);
$passwdstrip_tags(sha1($_POST['passwd']));

//establezco los datos de autenticación para acceder a la base de datos
    
$IDConexion mysqli_connect("mysql.hostinger.es" "mi_usuario" "contraseña" "base de datos");
     
    
//establezco qué quiero consultar
    
$result ="SELECT * FROM user_final 
        WHERE email='"
.mysql_real_escape_string($_POST['email'])."' 
        AND passwd = password('"
.mysql_real_escape_string($_POST['passwd'])."')";
     
    
//conecto a la base de datos
    
$IDConsulta mysqli_query($IDConexion $result);

if ( ! empty (
$IDConsulta) )
{

//extraigo los datos en forma de arreglo

while ($existe mysql_fetch_array($IDConsulta))
{
$id $existe['id_usu'];
$usu=$existe['username'];
$_SESSION['autenticado'] = 'si';
$_SESSION['id'] = $id;

echo 
"Hola ".$usu."!!!";

echo 
'<script>alert("logeado!");location.href="index.ph p"</script>'
}
}
else
{
echo 
'Datos incorrectos...';
}
si te funciona es que estabas conectando mal a la BD

EDITO:

he tenido un error en este código.
no es if (!empty($result))

sino que es if (!empty($IDConsulta))

ya está corregido

Última edición por guardarmicorreo; 20/07/2013 a las 09:09
  #16 (permalink)  
Antiguo 20/07/2013, 09:16
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

ahora ya me lanza errores, que al menos es algo, pero aqui ya estoy perdido

Warning: mysql_real_escape_string(): Access denied for user 'root'@'localhost' (using password: NO) in /home/u760258205/public_html/autenticacion.php on line 13 Warning: mysql_real_escape_string(): A link to the server could not be established in /home/u760258205/public_html/autenticacion.php on line 13 Warning: mysql_real_escape_string(): Access denied for user 'root'@'localhost' (using password: NO) in /home/u760258205/public_html/autenticacion.php on line 14 Warning: mysql_real_escape_string(): A link to the server could not be established in /home/u760258205/public_html/autenticacion.php on line 14 Warning: mysql_fetch_array() expects parameter 1 to be resource, object given in /home/u760258205/public_html/autenticacion.php on line 24
  #17 (permalink)  
Antiguo 20/07/2013, 09:16
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

trato de cambiar las comillas de las lineas 13 y14 a ver si igual era eso, pero nada..
  #18 (permalink)  
Antiguo 20/07/2013, 09:27
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con mysql_fetch_array

quita los escapes del select a ver si así funciona todo y ya solo tienes que ver por qué te están fallando los escapes
  #19 (permalink)  
Antiguo 20/07/2013, 09:45
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

ya, los quite y vuelve a mostrarme la pagina en blanco. ya no se que hacer con esto..
  #20 (permalink)  
Antiguo 20/07/2013, 09:50
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con mysql_fetch_array

Cita:
Iniciado por matiasmat Ver Mensaje
ya, los quite y vuelve a mostrarme la pagina en blanco. ya no se que hacer con esto..
después de quitar los escapes ¿cómo te quedó el código?
  #21 (permalink)  
Antiguo 20/07/2013, 10:00
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

quitandole los escapes, quedo asi:

session_start();

$email= strip_tags($_POST['email']);
$passwd= strip_tags(sha1($_POST['passwd']));

//establezco los datos de autenticación para acceder a la base de datos
$IDConexion = mysqli_connect("mysql.hostinger.es" , "------" , "--------" , "-------");

//establezco qué quiero consultar
$result = "SELECT * FROM user_final
WHERE email='".($_POST['email'])."'
AND passwd = password('".($_POST['passwd'])."')";

//conecto a la base de datos
$IDConsulta = mysqli_query($IDConexion , $result);

if (!empty ($IDConsulta))
{

//extraigo los datos en forma de arreglo

while ($existe = mysqli_fetch_array($IDConsulta))
{
$id = $existe['id_usu'];
$usu=$existe['username'];
$_SESSION['autenticado'] = 'si';
$_SESSION['id'] = $id;

echo "Hola ".$usu."!!!";

echo '<script>alert("logeado!");location.href="index.p h p"</script>';
}
}
else
{
echo 'Datos incorrectos...';
}




luego me daba un error en la linea

while ($existe = mysql_fetch_array($IDConsulta))

que la cambie por

while ($existe = mysqli_fetch_array($IDConsulta))

mysql --> por mysqli y ahi ya no me dio ningun error, pero tampoco va a la pagina index.

yo creo que el problema esta en el array , y estoy usando la version php 5.2 igual deberia buscar otra opcion de array, pero no se cual, estoy viendo opciones
  #22 (permalink)  
Antiguo 20/07/2013, 10:10
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con mysql_fetch_array

usas strip_tags

Código PHP:
Ver original
  1. $email= strip_tags($_POST['email']);
  2. $passwd= strip_tags(sha1($_POST['passwd']));

pero más abajo no usas el resultado (acabo de darme cuenta)

Código PHP:
Ver original
  1. WHERE email='".($_POST['email'])."'
  2. AND passwd = password('".($_POST['passwd'])."')";

haz un print_r()

y quita el if(!empty($IDConsulta)) con sus respectivas llaves y else.
también el javascript.

en resumen el código tiene que quedar así:

Código PHP:
Ver original
  1.  
  2. $email= strip_tags($_POST['email']);
  3. $passwd= strip_tags(sha1($_POST['passwd']));
  4.  
  5. //establezco los datos de autenticación para acceder a la base de datos
  6. $IDConexion = mysqli_connect("mysql.hostinger.es" , "------" , "--------" , "-------");
  7.  
  8. //establezco qué quiero consultar
  9. $result = "SELECT * FROM user_final
  10. WHERE email='".($email)."'
  11. AND passwd = password('".($passwd)."')";
  12.  
  13. //conecto a la base de datos
  14. $IDConsulta = mysqli_query($IDConexion , $result);
  15.  
  16. print_r($IDConsulta);
  17. echo "<br>"; //espacio entre el print_r(); y lo demás
  18.  
  19. //extraigo los datos en forma de arreglo
  20.  
  21. while ($existe = mysqli_fetch_array($IDConsulta))
  22. {
  23. $id = $existe['id_usu'];
  24. $usu=$existe['username'];
  25. $_SESSION['autenticado'] = 'si';
  26. $_SESSION['id'] = $id;
  27.  
  28. echo "Hola ".$usu."!!!";
  29. }

a ver si así sí.
  #23 (permalink)  
Antiguo 20/07/2013, 10:27
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

OK!
MIRA, con el codigo este, ya me da esto -->
mysqli_result Object ( [current_field] => 0 [field_count] => 4 [lengths] => [num_rows] => 0 [type] => 0 )

supongo que no esta leyendo lo de la base de datos, pero ahi ya estoy un poco verde...
si me lo podrias confirmar que no lo puede leer, ya que son 4 las columnas de la bd , pero no masrca ningun dato dentro de las celdas..
  #24 (permalink)  
Antiguo 20/07/2013, 10:34
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: problema con mysql_fetch_array

¿estás seguro que el usuario y la passwd que introduces existen en la base de datos?

ahí lo que te está diciendo es que no ha encontrado ningún dato con esos parámetros.

recuerda que el select lo estás haciendo algo parecido así:

selecciona todos los campos de la tabla user_final donde el usuario es igual a ... y la passwd es igual a... es decir, estás poniendo como condición dos valores que estrictamente se tienen que cumplir, yo veo más normal escoger el usuario y comprobar si la contraseña introducida corresponde al usuario seleccionado
  #25 (permalink)  
Antiguo 20/07/2013, 10:36
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: problema con mysql_fetch_array

Hola mira vamos por una prueba básica..
Imprime la cadena de la consulta a ver si como se supone debería ir...

haz esto

Código PHP:
Ver original
  1. echo $result;

Porque posiblemente la consulta este mal construida y por eso no te recupera datos...
  #26 (permalink)  
Antiguo 20/07/2013, 10:50
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

ok!
de acuerdo a vuestras sugerencias he hecho esta prueba..

con las lineas :

$result = "SELECT * FROM user_final
WHERE email='".($email)."'
AND passwd = password('".($passwd)."')";

esto lo he dejado de esta forma:


$result = "SELECT * FROM user_final
WHERE email='".($email)."' ";

y lo demas lo he dejado intacto.

y en el echo : me sale --> email='[email protected]' Hola matias!!!

que es mi email y si me lee el array
con lo cual hay un error con el password, que lo tengo encriptado..
  #27 (permalink)  
Antiguo 20/07/2013, 10:55
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: problema con mysql_fetch_array

Si te fijas la consulta esta mala... porque se supone debería mostrarte

Cita:
SELECT * FROM user_final WHERE email='[email protected]'
Pero dices que solo te imprime
Cita:
Lo cual no es una consulta sql válida....
  #28 (permalink)  
Antiguo 20/07/2013, 11:00
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

ESPERA..
si impreime SELECT * FROM user_final WHERE email='[email protected]'..
disculpa, lo puse mal yo..
solo queria mostrar que lee la base de datos..
  #29 (permalink)  
Antiguo 20/07/2013, 11:01
 
Fecha de Ingreso: julio-2013
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: problema con mysql_fetch_array

antes no leia nada.. y leyo cuando quite la passwd en la consulta mysql, con lo cual hay un problema ahi, supongo que es por que esta encriptada..
  #30 (permalink)  
Antiguo 20/07/2013, 11:11
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: problema con mysql_fetch_array

Sin duda que si, al parecer la encriptacion no es correcta o simplemente la clave que ingresa no es la correcta, porque la cadena de encriptacion debe ser igual...

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:19.