PDO Prepared Select语句,用于检查用户是否存在

时间:2012-05-09 13:14:09

标签: email select pdo prepared-statement match

我是一个pdo新手,需要准备并执行一些php / pdo代码: 此代码允许我在我的数据库中创建用户:

    // Perform Insert / Update
$STH = $dbh->prepare("INSERT INTO users (username, email) values (:username, :email)");
$STH->bindParam(':username', $username);
$STH->bindParam(':email', $email);
    try{
    $STH->execute();
    redirect_to(signupsuccess.php);
    }
catch(PDOException $e) {  
echo "I'm sorry, Dave. I'm afraid I can't do that.";  
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND); 
}
    }

但在我将数据放入数据库之前,我需要检查以确保数据库中尚不存在该电子邮件。我需要做一个SELECT,比如:

    $STH = $dbh->prepare("SELECT FROM users (email) values (:email)");
$STH->bindParam(':email', $email);
try{
    $STH->execute();
      }

我知道我需要添加

    "WHERE something matches '$_POST'email') something.." ...

我在这一点上完全迷失了......我可以在没有PDO的情况下做到这一点,但我想开始使用PDO准备好的声明......请帮忙!

1 个答案:

答案 0 :(得分:0)

只需做一个简单的选择。如果您可能有空电子邮件,我建议使用绑定值。

$STH = $dbh->prepare("SELECT email FROM users WHERE email = :email");
$STH->bindValue(':email', $email);
try{
    $STH->execute();
}

然后检查是否有任何记录被返回。如果是,请更新,不要插入。祝你好运。