簡體   English   中英

如果 where 子句是 integer 為零,為什么 sql 查詢返回一個值?

[英]Why sql query returns a value if where clause is integer with zero?

我有一個 mysql 字段類型,它的名稱是代碼,類型是 int(11) 我使用這個 doctrine 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);

但是無論值是 integer 還是我作為$this->username傳遞的字符串,它仍然會找到一條代碼字段值為 0 的記錄。為什么會發生這種情況? 我可能必須添加該代碼字段是 mysql 中的唯一鍵。

假設您的表是用戶,您應該將參數設置為您需要的相同時間,例如:

$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', $this->your_code);
     $query->setParameter('n2',  $this->your_key);
     $query->setMaxResults(1);
     $results = $query->getArrayResult();
     print_r($results);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM