在PDO中检查电子邮件

时间:2016-04-02 12:35:56

标签: php mysql database pdo

检查数据库中是否存在电子邮件时,我遇到了问题。

<?php
session_start();

include_once("connection.php");
$handler = new Connection;
$handler = $handler->connect();

$email = $_POST['email'];

$check = $handler->prepare("SELECT * FROM emailcollector WHERE email=':mail'");
$check->execute(array(':mail' => $email));


if($check->rowCount > 0){
  header("Location: yes.php");
}else{
  header("Location: no.php");
}
?>

我正在使用pdo连接到数据库。当我运行代码时,总是说它不存在。我有点新鲜。谢谢你的帮助

3 个答案:

答案 0 :(得分:2)

在您的SQL中,删除':mail'

周围的引号
$check = $handler->prepare("SELECT * FROM emailcollector WHERE email=:mail");

PDO占位符不需要任何引号,即使该值是字符串。通过使用引号,您实际上正在执行以下操作,如您所见,这是不对的。

SELECT * FROM emailcollector WHERE email="'mail@mail.com'"

答案 1 :(得分:1)

PDOStatement::rowCount()的可能问题:

对于大多数数据库,PDOStatement :: rowCount()不返回受SELECT语句影响的行数。相反,使用PDO :: query()发出带有与预期SELECT语句相同的谓词的SELECT COUNT(*)语句,然后使用PDOStatement :: fetchColumn()来检索将返回的行数。然后,您的应用程序可以执行正确的操作。

答案 2 :(得分:1)

rowCount是一个函数而不是属性。因此,您必须像这样调用它,注意()

if($check->rowCount() > 0){