我正在创建一个用户管理系统。我希望 php 脚本验证电子邮件地址是否已存在于数据库中。我可以更新用户数据。我可以验证正确的电子邮件格式。我脚本中不起作用的部分是检查电子邮件是否已在使用中的部分。这是不起作用的部分:
if($_POST['email'] !=$_POST['email'])
{
$query_email = "
SELECT
from users
where
email = :email
";
$query_goes = array(
':email' => $_POST['email']
);
try
{
$stmt = $db->prepare($query_email);
$result = $stmt->execute($query_goes);
}
catch (PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$row = $stmt->fetch();
if($row)
{
die("Email already in use...");
}
它抛出的错误:糟糕,无法运行查询:SQLSTATE[23000]:违反完整性约束:1062 Duplicata du champ 'tuskrr@fun.com' pour la clef 'email'
最佳答案
你需要选择一些东西。您可以执行 SELECT 1
,因为您只是检查该行是否存在,而不关心是否返回物理数据。
没有邮件就没有结果,有邮件就有结果。
$query_email = "
SELECT
1
from users
where
email = :email
";
另一方面,这将如何执行:
if($_POST['email'] !=$_POST['email'])
在什么情况下变量不等于自身?
即使开始运行,我也无法想象这种逻辑。您的错误是重复条目,与您提供的任何代码无关。我的猜测是它会跳过这段代码,您将直接进入您的插入。
也许 if(isset($_POST['email']))
是您想要的?
关于php - 验证数据库中是否存在电子邮件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39256347/