【问题标题】:How to avoid duplicate emails php / sql?如何避免重复的电子邮件 php / sql?
【发布时间】:2017-08-16 09:08:24
【问题描述】:

我使用了这段代码,但我不知道是什么问题,我也使用了不同的代码

我想要做的是检查并且不允许用户添加他的电子邮件两次

<?php
include("includedb.php");
//declare variables
$name        = $_POST['name'];
$email       = $_POST['email'];
$tel         = $_POST['tel'];
$gift        = $_POST['gift'];
$formName    = $_POST['formName'];
$formEmail   = $_POST['formEmail'];
$formEmirate = $_POST['formEmirate'];
$birthday    = $_POST['birthday'];
$date        = $_POST['date'];

$result = mysqli_query("SELECT * FROM  users WHERE email = '$email'") or exit(mysqli_error()); //check for duplicates

$num_rows = mysqli_num_rows($result); //number of rows where duplicates exist

if ($num_rows == 0) { //if there are no duplicates...insert
    $sql = "INSERT INTO users (name, email, tel, gift, formName, formEmail, formEmirate, birthday, date)
VALUES ('$name', '$email', '$tel','$gift', '$formName', '$formEmail', '$formEmirate','$birthday',CURRENT_TIMESTAMP )";
    if (!mysqli_query($sql)) {
        die('Error: ' . mysqli_error());
    }
}

mysqli_close();

header("location: thank-you.html?remarks=success");

?>

【问题讨论】:

  • 您使用的是哪个数据库
  • 你的逻辑看起来不错,究竟是什么不能使用该代码?顺便说一句,您对 SQL 注入持开放态度,请仔细阅读。 :)
  • if ($num_rows == 0) {...} else { $sql = "UPDATE ..." }
  • 我得到空白页,我正在使用 sql 数据库

标签: php mysql sql-server mamp


【解决方案1】:

问题是您没有将任何连接传递给 mysql_query

因此查询不会被查询

$conn = your connection;

$result = mysqli_query($conn,"SELECT * FROM  users WHERE email = '$email'") or exit(mysqli_error()); //check for duplicates
$num_rows = mysqli_num_rows($result); //number of rows where duplicates exist
if($num_rows == 0) { //if there are no duplicates...insert
$sql = "INSERT INTO users (name, email, tel, gift, formName, formEmail, formEmirate, birthday, date)
VALUES ('$name', '$email', '$tel','$gift', '$formName', '$formEmail', '$formEmirate','$birthday',CURRENT_TIMESTAMP )";
if (!mysqli_query($conn,$sql))
  {
  die('Error: ' . mysqli_error());
  }
}

【讨论】:

  • 嗨,感谢您的帮助,但我仍然得到空白页 $result = mysqli_query($conn,"SELECT * FROM users WHERE email = '$email'") 或 exit(mysqli_error()); $num_rows = mysqli_num_rows($result); if($num_rows == 0) { $sql = "INSERT INTO users (name, email, tel, gift, formName, formEmail, formEmirate,birthday, date) VALUES ('$name', '$email', '$tel ','$gift', '$formName', '$formEmail', '$formEmirate','$birthday',CURRENT_TIMESTAMP )"; if (!mysqli_query($conn,$sql)) { die('Error: ' .mysqli_error()); } }
【解决方案2】:

感谢支持我找到了对我有用的方法

if(isset($_POST['submit'])){
$name= $_POST['name'];
$email= $_POST['email'];


$result = mysqli_query($conn,"SELECT * FROM  test WHERE email = '$email'") or exit(mysqli_error()); //check for duplicates
$num_rows = mysqli_num_rows($result); //number of rows where duplicates exist

 if(($num_rows) > 0){
     echo "A record already exists."; 
     exit;
    }

else{
$sql = "INSERT INTO test (name, email)
VALUES ('$name', '$email')";
if (!mysqli_query($conn,$sql))
  {
  die('Error: ' . mysqli_error());
  }
}

if($result) {

          header("Location: game.html");

}else{ echo "Not Successful"; }

mysqli_close();
}
?>

<!DOCTYPE html>
<head>

</head>
<body>

<h2>Enter your Name and Email</h2>
<form method="post">
    <p><strong>First Name:</strong><br /> <input type="text" name="name" /></p>
    <p><strong>email:</strong><br /> <input type="email" name="email"/></p>

    <input type="submit" name="submit" value="Add Customer" />
</form>



</body>
</html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    相关资源
    最近更新 更多