entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Fatal error: Call to a member function prepare() on a non-object in

Tengo el siguiente problema creando un login en PDO (Fatal error: Call to a member function prepare() on a non-object in line 6 corresponde a la siguiente linea "$stmt = $conn->prepare($sql);")

este es el codigo

<?php

    $correo=$_POST['correo'];
    $clave=md5($_POST['clave']);
    $sql="SELECT  id_usuario, nombre, apellido, correo, p.id_perfil, perfil FROM usuario u INNER JOIN perfil p ON p.id_perfil=u.id_perfil WHERE u.correo=:correo AND u.clave=:clave";
    $stmt = $conn->prepare($sql);
    $stmt->execute();
    $stmt->bindParam(':correo',$correo);
    $stmt->bindParam(':clave',$clave);

    if($stmt->rowCount()>=1){
        session_start();
        $fila=$stmt->fetch();
        $_SESSION['nombre']=$fila['nombre'];
        $_SESSION['apellido']=$fila['apellido'];
        $_SESSION['correo']=$fila['correo'];
        $_SESSION['token']=md5(uniqid(mt_rand(),true));
        header("Location: administrador/index.php");
    }else{
        echo "ERROR los datos no son correctos";
    }

    require_once('../php/Conexion.php');
$conn = Conectar();

?>  

y mi archivo de conexion a la bd es el siguiente

<?php
function Conectar(){
  $conn = null;
  $host = 'localhost';
  $db = 'porcicula';
  $user = 'root';
  $pwd = '';
  try {
    $conn = new PDO('mysql:host='.$host.';dbname='.$db, $user, $pwd);
  }catch(PDOException $e){
    echo ':( Error al conectar con la base de datos '.$e;
    exit;
  }
  return $conn;
}
?>

espero que me puedan dar una mano y gracias

1 Respuesta

3votos

Leonardo-Tadei Puntos227320

Hola @zenosama,

el problema está en que estás queriendo ejecutar $stmt = $conn->prepare($sql); antes de llamar a $conn = Conectar();, con lo que al moento de ejecutar la línea que falla todavía $conn está indefinido y no es un Objeto de tipo PDO.

Llamá a $conn = Conectar(); al principio del código y el problema debería desaparecer!!!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta