Foros del Web » Programando para Internet » PHP »

Resultados inesperados al consultar la BD

Estas en el tema de Resultados inesperados al consultar la BD en el foro de PHP en Foros del Web. Hola gentes, alguien me puede ayudar con este problema: Cuando consulto la BD para comprobar que el usuario que quiere hacer log in, introdujo correctamente ...
  #1 (permalink)  
Antiguo 30/04/2012, 16:17
 
Fecha de Ingreso: abril-2012
Ubicación: Trelew
Mensajes: 14
Antigüedad: 12 años
Puntos: 2
Resultados inesperados al consultar la BD

Hola gentes, alguien me puede ayudar con este problema:
Cuando consulto la BD para comprobar que el usuario que quiere hacer log in, introdujo correctamente su nombre de usuario y password, la primer vez funciona bien, es decir, si en la base tengo un usuario (pepe) con pass (hola) e ingreso dichos datos FUNCIONA. Pero si posteriorme ingreso user 123 y pass 123, va hasta la base de datos y me trae lo siguiente:

pepe hola (X años)
Bienvenido: 123

Entonces es como que la variable $results acumula los datos. En este segunda entrada que hago tendría que estar empty!.

Alguna idea? quizás no tenga que usar el fetchAll(), pero no se cual otro usar probé con el fetch() pero es lo mismo. Dejo el código:



Código PHP:
Ver original
  1. if ($_POST['user'] && $_POST['pass']){
  2.       // Si el usuario ha intentado hacer log in
  3.       require_once 'conexion.php';
  4.      
  5.       try {          
  6.            //armamos el sql
  7.            $sql = "SELECT * FROM cliente
  8.                 WHERE apellido >= :apellido AND password >= :password";
  9.  
  10.            //preparamos un statement con el sql anterior
  11.            $stmt = $pdo->prepare($sql);
  12.  
  13.            //especificamos la salida como un array
  14.            $stmt->setFetchMode(PDO::FETCH_ASSOC); //podría ser PDO::FETCH_OBJ
  15.  
  16.            //sustituimos los parámetros con los valores reales
  17.            $stmt->bindParam(':apellido', $_POST['user']);
  18.            $stmt->bindParam(':password', $_POST['pass']);
  19.  
  20.            //ejecutamos la consulta
  21.            $stmt->execute();
  22.  
  23.            //recuperamos los datos en el array asoc.
  24.            $results = $stmt->fetchAll();
  25.            
  26.              //mostramos los datos (ej. en un template)
  27.            if (!empty ($results)){
  28.                  foreach($results as $fila){
  29.                    echo sprintf("%s %s (%d años)<br/>",
  30.                                 $fila['apellido'],
  31.                                 $fila['nombre'],
  32.                                 $fila['edad']);
  33.                  };
  34.                 echo "Bienvenido: ".$_POST['user']."<br>";    
  35.                
  36.                 // si están en la base de datos registra la id de usuario
  37.                 $valid_user = $_POST['user'];
  38.                 $_SESSION['valid_user'] = $valid_user;
  39.                 //header("Location: index.php");
  40.            }
  41.       } catch (Exception $exc) {
  42.           echo $exc->getTraceAsString();
  43.       }
  44.     }


No es necesario ese foreach() pero no creo que sea el tema..
  #2 (permalink)  
Antiguo 30/04/2012, 17:03
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Resultados inesperados al consultar la BD

$sql = "SELECT * FROM cliente WHERE apellido >= :apellido AND password >= :password";

apellido mayor o igual que... y password mayor o igual que...?

Ahí debe ir sólo el signo igual.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 30/04/2012, 17:10
 
Fecha de Ingreso: abril-2012
Ubicación: Trelew
Mensajes: 14
Antigüedad: 12 años
Puntos: 2
Respuesta: Resultados inesperados al consultar la BD

Gracias man!! era eso que pedaso d p....

Pasa que soy nuevo en esto y ese >= era un copy-paste que hice y bueno al ser nuevo me hice la cabeza que era el fetchAll() o algún problema con las sessiones.

Gracias!!!
Que bueno que ya soy parte de este foro

Etiquetas: bd, consultar, resultados, sql, variables, usuarios
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 12:22.