Php PDO rowCount()始终返回1

Php PDO rowCount()始终返回1,php,pdo,Php,Pdo,我正在制作一个脚本来添加新用户 一切正常,但现在我正试图过滤掉重复的电子邮件。因此,如果电子邮件已经存在,它应该给出一条错误消息 但由于某些原因,$count始终大于0 这是我的代码: $query = $db->prepare("SELECT COUNT(*) FROM `users` WHERE `email` = ':email'"); $query->execute(array( ':email' => $email )); $count

我正在制作一个脚本来添加新用户

一切正常,但现在我正试图过滤掉重复的电子邮件。因此,如果电子邮件已经存在,它应该给出一条错误消息

但由于某些原因,$count始终大于0

这是我的代码:

$query = $db->prepare("SELECT COUNT(*) FROM `users` WHERE `email` = ':email'");
$query->execute(array(
       ':email' =>  $email
        ));
$count = $query->rowCount();
echo $count;
我做错了什么?

SELECT COUNT*为该行返回0,即1行。因此将COUNT*更改为电子邮件

<?php
$query = $db->prepare("SELECT email FROM `users` WHERE `email` = :email");
$query->execute(array(
':email'    =>  $email
));
$count = $query->rowCount();
echo $count;
?>

可能是因为SELECT COUNT*为该行返回0,即1行。更改为选择“email”或从查询中获取返回值,即$query->fetch[0];只是猜测一下,但请尝试在execute语句之后添加$query->store\u结果。我在mysqli查询中也遇到了同样的问题,并解决了这个问题,但我对PDO知之甚少,所以它实际上只是一个猜测。@user3154948->store_result是一个mysqli方法,而不是PDO方法,所以在这里不起作用。@sean:谢谢,解决了这个问题。虽然,我在phpmyadmin中使用了查询,count*返回了0,但我没有忘记。但是你的回答清楚了。。谢谢写一个答案,我会接受:@Sean我想知道这是否是事实,因此猜测声明…你的答案的措辞几乎与你发布前6分钟发布的内容一模一样。巧合?@Sean:但答案总是一样的。更多关于如何解决这个问题的说法是从用户那里选择电子邮件,其中email=':email'结果是他需要的答案。我说得对吗?@Sean:即使是你的评论的第一个投票也是由我给出的:。知道吗also@VigneswaranS不,代表点就在这里。你的代表积分越多,你在这里的特权就越多。不幸的是,我怀疑这里的rep points会直接帮助你的就业,但是参加这里的rep points会有希望增加你的学习/知识,这可能会对你的求职有所帮助。声誉的帮助就在于,你的声誉能够给出好的答案,并且没有语法错误。您的答案仍然包含与OP相同的语法错误=':email';在WHERE子句中,在其周围有引号,必须读作=:email;你需要纠正它。未来的问题/答案访问者可能会认为语法是正确的,而事实并非如此。