检查数据库中是否存在电子邮件时,我遇到了问题。
<?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连接到数据库。当我运行代码时,总是说它不存在。我有点新鲜。谢谢你的帮助
答案 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){