如果where子句是具有零的整数,为什么SQL查询返回一个值?

问题描述 投票:0回答:1

我有一个mysql字段类型,它的名称是代码,类型是int(11),我使用这个学说dql:

     $dql = "SELECT u.id, u.password, u.lastLoginIp, u.lastLoginDate FROM Entities\User u WHERE u.status = '1' AND (u.code = ?1 OR u.email = :n OR u.secretKey = :n)";
     $query = $this->_em->createQuery($dql);
     $query->setParameter('n', $this->username);
     $query->setParameter(1, (int)$this->username);
     $query->setMaxResults(1);
     $results = $query->getArrayResult();
     print_r($results);

但是无论我以$this->username传递任何值,整数还是字符串,它仍然会找到一条代码字段值为0的记录。为什么会发生这种情况?我可能不得不把代码字段设置为mysql中的UNIQUE键。

php mysql doctrine-orm doctrine
1个回答
0
投票

假设您的表是用户您应该将参数设置为所需的相同时间,例如:

$dql = "SELECT u.id, u.password, u.lastLoginIp, u.lastLoginDate 
    FROM User u WHERE u.status = '1' AND (u.code = :n0 OR u.email = :n1 OR u.secretKey = :n2)";
     $query = $this->_em->createQuery($dql);
     $query->setParameter('n0', $this->username);
     $query->setParameter('n1', (int)$this->username);
     $query->setParameter('n2', (int)$this->username);
     $query->setMaxResults(1);
     $results = $query->getArrayResult();
     print_r($results);
© www.soinside.com 2019 - 2024. All rights reserved.