首页 > 解决方案 > 误报 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;
}

标签: phppdo

解决方案


文档

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

如果关联 PDOStatement 执行的最后一条 SQL 语句是 SELECT 语句,则某些数据库可能会返回该语句返回的行数。但是,不能保证所有数据库都具有此行为,并且不应依赖于可移植应用程序。


推荐阅读