假阳性PDO行数

时间:2019-01-27 06:33:07

标签: php pdo

我正在尝试测试用户是否已使用rowcount激活了帐户。目前,即使我故意编辑数据库数据失败,它也会返回正值。

我测试了SQL,看是否是问题所在,它似乎返回了预期值。我假设这与我的PHP代码有关

try
{
  $db = new Database;
  $query = "SELECT COUNT(*),accountStatus, email FROM users WHERE email  = :email AND accountStatus ='Active'";   
  $stmt = $db->prepare($query);    
  $stmt->bindValue(':email', $email);  
  $stmt->execute();   
  $count = $stmt->rowCount();  
}
catch(Exception $e)
{
 $errors[] = ["name" => "email", "error" => "Something went wrong contact the administrator or try again later"];
} 
if(count($count > 0))
{
  return true;
}       
else
{
  return false;
}

1 个答案:

答案 0 :(得分:2)

来自docs

  

PDOStatement :: rowCount()返回受相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE语句影响的行数。

     

如果关联的PDOStatement执行的最后一条SQL语句是SELECT语句,则某些数据库可能返回该语句返回的行数。但是,并非所有数据库都能保证这种行为,便携式应用程序不应该依赖这种行为。