【问题标题】:pdo select statement is not working as it should [closed]pdo select 语句无法正常工作 [关闭]
【发布时间】:2025-11-30 11:00:01
【问题描述】:

我厌倦了试图找到错误和解决方案,但我没有得到任何方法, 代码对我来说似乎没问题。

我在下面有这个用于登录系统的 pdo 语句,我输入了正确的电子邮件和密码,但它总是在此输入其他条件

      else //always entering here  
            {                   
              echo '<pre>';     //I was trying to see whats happening with printf
              print_r($result); //but this print_r is not showing nothing 
              echo '</pre>';

              echo ' Wrong Password';  //I always get this message   
            }

我的 pdo 声明:

if(isset($_POST['sendLogin']))
{
  $f['email'] = $_POST['email'];
  $f['pass'] =  $_POST['pass'];

  $autEmail = $f['email'];
  $autpass = $f['pass'];
  $searchEmail = $pdo->prepare("SELECT * FROM users where email = :email");  
  $searchEmail->bindValue(":email", $autEmail);  
  $searchEmail->execute();
  $rows = $searchEmail->fetchAll();
  $num_rows = count($rows);
  $result = $searchEmail->fetch(PDO::FETCH_ASSOC);

  if($num_rows == 1)
   {

     if($autEmail == $result['email'] && $autpass == $result['pass'])
    {
           $_SESSION['result'] = $result;
           header('Location:'.$_SERVER['PHP_SELF']);
        }

   else //always entering here 
    {                   
        echo '<pre>';
        print_r($result);
        echo '</pre>';
        echo ' Wrong Password';     
    }
  }
}

【问题讨论】:

  • “我有这个 pdo 语句...” AND => mysql_* --- 选择“一个”API。
  • 感谢您的问题..但是我在哪里将 mysql 与 PDO 混合在一起?我在这里只看到 PDO。我已经删除了那个 mysql_real_escape_string 但它的错误相同。

标签: php mysql sql pdo


【解决方案1】:

您计算错误的行数。使用$num_rows = $searchEmail-&gt;rowCount(); 计算行数。

【讨论】:

  • 伙计..谢谢!!终于成功了!! :)
  • 没问题!一定要检查它是否正确:-)
  • 但这很奇怪,因为我认为 $num_rows 可以正常工作,因为当我写电子邮件并单击提交时,$num_rows 返回 1 行..所以它是正确的,但密码不起作用好的。但现在它的工作..唯一不好的是我不明白它是如何仅与这种变化一起工作的。但是谢谢你:)
  • count() 对数组进行计数,而 rowCount() 是用于计算 SELECT 语句中的数字的 pdo。
  • 没问题很高兴我能帮上忙!