这个陈述php教义有什么问题

时间:2015-06-05 19:41:37

标签: php doctrine-orm doctrine php-5.3

我正在尝试使用doctrine在我的数据库中进行验证,我只需要在SQL中创建此语句,如Select * from usuarios where usuario_email = someEmail

点击表单中的提交按钮后, 我从包含UsuarioDao的脚本(来自doctrine default)实例化类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

}

这里我的课程为我的模型

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;
    }

}

我错了:

  

致命错误:未捕获的异常'Doctrine \ ORM \ Query \ QueryException'   消息'SELECT u FROM Usuario u WHERE u.usuario_email   在C:\ wamp \ www \ RicardoOfficial \ vendor \ doctrine \ orm \ lib \ Doctrine \ ORM \ Query \ QueryException.php中的=ricardo@gmail.com'   在第52行

和这个

  

Doctrine \ ORM \ Query \ QueryException:[语法错误]第0行,第54行:   错误:字符串的预期结束,得到'@'   C:\ WAMP \ WWW \ RicardoOfficial \供应商\原则\ ORM \ LIB \原则\ ORM \查询\ QueryException.php   在第52行

1 个答案:

答案 0 :(得分:0)

你忘记了价值的引用。

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

如果您对SQL语句有疑问,最好的办法是复制您将其粘贴到SQL编辑器中的查询,并且通常可以看到您会快速发现错误。