php - 验证数据库中是否存在电子邮件时遇到问题

标签 php html mysql

我正在创建一个用户管理系统。我希望 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/

相关文章:

jquery - 根据窗口大小调整div

mysql - 从另一行插入值并且句柄行不存在。 mysql插入

php - 插入后使用 fetch 时出现 PDO 一般错误

php - 正则表达式不适用于 mysql_fetch_array

javascript - 将多个 CSS 类应用于 Angular 选择?

mysql - 限制 SQL 查询中每个 ID 的行数

mysql - SQL 在连接 3 个表时使用 count 和 sum

php - 在 php drupal 7 中使用 é 作为列名进行查询

php - 如何更改 symfony 2 doctrine 映射器以使用我的自定义目录而不是包下的实体目录

html - 如何将图像移动到 li manu 的右侧?