【问题标题】:Trying to check if an email with the same value already exists尝试检查是否已存在具有相同值的电子邮件
【发布时间】:2015-08-28 02:40:11
【问题描述】:

我正在尝试这样做,以便在将数据插入数据库之前检查电子邮件是否已存在于数据库中。

这是我的代码:

<?php
    $servername = "servername";
    $username = "username";
    $password = "password";
    $dbname = "dbname";

    $Mail = $_POST['email'];

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    // Check connection
    if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
    }

    //Inputed in E-Mail Field
    $Mail = $_POST['email'];

    $SearchEmail = $conn->query("SELECT (Mail) FROM betakey WHERE Mail = '$Mail'");

    if ($SearchEmail->num_rows > 0) {
        print "That Email is already registered for the closed alpha";
    }
    else {
        $conn->query("INSERT INTO betakey VALUES ('$Mail')");
    }

    $conn->close();
    ?> 

当我访问该页面时它不会给我任何错误,但它也不会回显它存在或在它不存在时插入数据。

【问题讨论】:

  • 你可以试试这个:“SELECT count(Mail) FROM betakey WHERE Mail = '$Mail'”
  • 您可能希望在代码的最后一个大括号之前添加一个echo 'mail sent'; 语句以帮助您进行调试。
  • 启用error_log到单个文件并发布,你可能会遇到sql或php语法错误。
  • ahmet 仍然没有工作,迈克,完成了。
  • Pat4561 是对的。我认为问题在于检测邮件是否存在。

标签: php mysql


【解决方案1】:

问题出在您的插入查询中。插入查询的结构始终如下所示。

INSERT INTO table_name (column1, column2, column3,...) 值(值 1,值 2,值 3,...) 见:http://www.w3schools.com/php/php_mysql_insert.asp

将此应用于您的代码,结果如下。

<?php
$servername = "servername";
$username = "username";
$password = "password";
$dbname = "dbname";

$Mail = $_POST['email'];

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

//Inputed in E-Mail Field
$Mail = $_POST['email'];

$SearchEmail = $conn->query("SELECT count(Mail) FROM betakey WHERE Mail = '$Mail'");

if ($SearchEmail->num_rows > 0) {
    print "That Email is already registered for the closed alpha";
}
else {
    $conn->query("INSERT INTO betakey (Mail) VALUES ('$Mail')");
}

$conn->close();
?> 

而且我建议你去掉两个'$Mail = $_POST['email'];'中的一个,因为以同样的方式声明一个变量两次是没有用的。

【讨论】:

  • 我不认为这就是答案,因为我尝试注册一个已经存在的电子邮件并且它没有给我“打印”(...)”声明。
  • 当您尝试打印 $SearchEmail 时,它的输出是什么?
  • ahmet,发生这种情况 可捕获的致命错误:无法在第 31 行的 /home/a9508844/public_html/BetaRegistration.php 中将类 mysqli_result 的对象转换为字符串 这可能是它不起作用的原因,但我该怎么做修复它
  • 对不起,我不擅长 php,但也许你可以尝试像@mailo (stackoverflow.com/questions/5157905/…) 的回答那样打印
  • @KillZoneZ,不,发生致命错误是因为您尝试打印数组。如果你想查看输出,你应该使用 print_r($array) 函数。你能给我们提供完整的代码吗?在我这边,当我尝试注册一个已经存在的电子邮件时它正在工作,所以它也应该在你这边工作。
猜你喜欢
  • 1970-01-01
  • 2017-07-11
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 2014-03-15
  • 1970-01-01
相关资源
最近更新 更多