我正在创建一个关于音乐的网站,在我网站的底部有一个只有电子邮件提交的表单。我这样做是为了收集用户的电子邮件。
此外,我创建了一个数据库,并在该数据库中创建了一个名为 emails 的表,其中只有 2 列:id
和 email
。
我想让我收到的电子邮件是唯一的,因为现在我正在测试它,我可以放置许多同名的电子邮件。我已经尝试了一些编码来实现这一点,但没有成功,所以我只会发布我目前拥有的代码,这样你可以帮助我了解我需要在该代码中添加的内容,以便接收一个唯一的电子邮件地址。
P.S 我会在项目结束时将我的数据库从 mysql 更新到 mysqli。
这是我当前的代码:
<?php
error_reporting(E_ERROR | E_PARSE);
include('../database/db.php');
$email = $_POST['email'];
if($email != "") {
$sql = mysql_query ("INSERT INTO emails (email) VALUES ('$email')");
echo "Thank you for Submitting. Redirecting back to Home Page";
}
?>
最佳答案
- 首先.. 正如@RamRaider 已经评论过的,您必须向
email
列添加一个唯一索引 - 其次.. 你必须停止使用
mysql_*
函数,因为它们已被弃用。您可以使用mysqli_*
函数、MySQLi
类或PDO
。此外,通过使用准备好的语句,您可以避免 SQL Injections 即使你设置了一个唯一索引,你也应该在插入它之前进行验证:
<?php // PDO instantiation here $stmt = $pdo->prepare('SELECT COUNT(email) AS EmailCount FROM emails WHERE email = :email'); $stmt->execute(array('email' => $_POST['email'])); $result = $stmt->fetch(PDO::FETCH_ASSOC); if ($result['EmailCount'] == 0) { $stmt = $pdo->prepare('INSERT INTO emails (email) VALUES (:email)'); $stmt->execute(array('email' => $_POST['email'])); echo 'Thank you for Submitting. Redirecting back to Home Page'; } else { echo 'E-mail exists!'; }
关于php - 检查电子邮件是唯一的 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35131149/