PHP - La he vuelto a liar, while($row = $query->fetch(PDO::FETCH_OBJ))

   
Vista:

La he vuelto a liar, while($row = $query->fetch(PDO::FETCH_OBJ))

Publicado por Sergio (20 intervenciones) el 29/06/2017 13:19:33
Siguiendo las recomendaciones de un usuario, he cambiado todo el codigo de acceso de login y ahora esta desde un Class, si ejecuto el codigo a si, para hacer la prueba; echo $row->email; devuelve el valor bien por consola

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public function login(){
        try{
$email = $_POST['email'];
$pass = $_POST['pass'];
 
$query = $this->prepare('SELECT * FROM `Alta_Cliente` WHERE `email`= ? LIMIT 1');
$query->execute(array($email));
 
while($row = $query->fetch(PDO::FETCH_OBJ)) {
 
     if ($row == true){
 
    echo $row->email;
 
 
       $query = null;
        }
 
}
}catch(PDOException  $e ){
echo "Error: ".$e;
}
 
    }

pero con este codigo me devuelve el siguiente error:
1<br />
<b>Fatal error</b>: Uncaught Error: Call to a member function fetch() on null in /opt/lampp/htdocs/db_php/class-db.php:24
Stack trace:
#0 /opt/lampp/htdocs/db_php/inicio-sesion.php(7): Conexion-&gt;login()
#1 {main}
thrown in <b>/opt/lampp/htdocs/db_php/class-db.php</b> on line <b>24</b><br />

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public function login(){
        try{
$email = $_POST['email'];
$pass = $_POST['pass'];
 
$query = $this->prepare('SELECT * FROM `Alta_Cliente` WHERE `email`= ? LIMIT 1');
$query->execute(array($email));
 
while($row = $query->fetch(PDO::FETCH_OBJ)) {
/*its getting data in line.And its an object*/
     if ($row == true){
$_SESSION['id_cliente'] = $row->ID_Cliente;
$_SESSION['nombre'] = $row->nombre;
$_SESSION['apellidos'] = $row->apellidos;
$_SESSION['email'] = $row->email;
    //echo $row->email;
        if (password_verify($pass, $row->pass)){
    echo 1;
}else {
    echo 2;
 
}
 
       $query = null;
        }
 
}
}catch(PDOException  $e ){
echo "Error: ".$e;
}
 
    }

¿Alguna sugerencia ?


Solucionado era cambiando $query = null; al final antes del ultimo }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

La he vuelto a liar, while($row = $query->fetch(PDO::FETCH_OBJ))

Publicado por xve (6810 intervenciones) el 29/06/2017 17:26:16
Hola Sergio, puede ser que la consulta SQL no te devuelve ningún resultado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

La he vuelto a liar, while($row = $query->fetch(PDO::FETCH_OBJ))

Publicado por Juan (43 intervenciones) el 29/06/2017 17:36:42
Buenas xve

Según parece ya lo solucionó, al menos eso pone en la última línea, pero tenía pinta que ibas por el lado correcto.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad