2015-06-05 2 views
0

Я пытаюсь сделать проверку в моей БД с помощью доктрины, где я просто нужно сделать это заявление в SQL, как, Select * from usuarios where usuario_email = someEmail, что неправильно в этом заявлении PHP доктрины

После нажатия на кнопку отправить от моей формы, Я создаю экземпляр класса UsuarioDao, из сценария, который включает bootstrap.php (из доктрины по умолчанию) и передать с параметром entityManager. Затем я вызываю метод validacao(), я знаю, что я не делаю правильную форму, не используя фильтры и т. Д., Я просто хочу понять, как работает доктрина. Вот моя модель доктрина

/** 
* @Entity @Table(name="usuarios") 
**/ 
class Usuario { 
    /** @Id @Column(type="integer") @GeneratedValue **/ 
    public $usuario_id; 
    /** @Column(type="string") **/ 
    public $usuario_nome; 
    /** @Column(type="string") **/ 
    public $usuario_email; 
    /** @Column(type="string") **/ 
    public $usuario_senha; 
    /** @Column(type="string") **/ 
    public $usuario_status; 

    //getters and setters omited 

} 

Вот мой classDao для моей модели

use Doctrine\ORM\EntityManager; 
class UsuarioDao{ 

    /** 
    * @var EntityManager 
    */ 
    private $entityManager; 

    function __construct(EntityManager $entityManager) { 
     $this->entityManager = $entityManager; 
    } 

    public function validacao(){ 

     $usuario = new Usuario(); 
     $usuario->setUsuario_email($_POST['email']); 
     $usuario->setUsuario_senha($_POST['senha']); 
     $em = $this->entityManager; 
     $query = $em->createQuery('SELECT u FROM Usuario u WHERE u.usuario_email ='. $usuario->getUsuario_email()); 
     $resultado = $query->getResult(); 
     return $resultado; 
    } 

} 

Я получаю это неправильно:

Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message 'SELECT u FROM Usuario u WHERE u.usuario_email [email protected]' in C:\wamp\www\RicardoOfficial\vendor\doctrine\orm\lib\Doctrine\ORM\Query\QueryException.php on line 52

и это

Doctrine\ORM\Query\QueryException: [Syntax Error] line 0, col 54: Error: Expected end of string, got '@' in C:\wamp\www\RicardoOfficial\vendor\doctrine\orm\lib\Doctrine\ORM\Query\QueryException.php on line 52

+0

проверить имя переменной '$ usuario-> setUsuario_nome ($ _ POST ['email']); $ usuario-> setUsuario_senha ($ _ POST ['senha']); 'они различны. Проблема с верблюдом. проверьте один раз –

+0

попробуйте изменить WHERE u.usuario_email = '. $ Usuario-> getUsuario_email()); к WHERE u.usuario_email = '. $ usuario-> getUsuario_email()). "'"; - похоже, что вы не закрываете одиночные кавычки по адресу электронной почты – dbinns66

+0

$ usuario-> setUsuario_senha ($ _ POST ['senha']) будет для установки пароля, он еще не используется, я пытаюсь просто с электронной почтой во-первых, но не получится, что я поставил под вопрос –

ответ

0

Вы забыли кавычки вокруг Значение.

$query = $em->createQuery('SELECT u FROM Usuario u WHERE u.usuario_email ="'. $usuario->getUsuario_email(). '"'); 

Если проблема с заявлениями SQL лучше всего сделать, это скопировать запрос, который вы получили вставить его в редакторе SQL и посмотреть, как правило, вы бы заметили ошибку тихий быстро.

Смежные вопросы