您好,我正在向 Stackoverflow 上的所有 PHP 大神们寻求帮助:)
我已经创建了一个电子邮件注册表单(只有 1 个电子邮件字段),它能够使用 Ajax 进行验证并从我找到的基本 PHP 脚本向数据库发布一封新电子邮件。
然而,下一步我要做的是在添加之前检查电子邮件是否已经在数据库中。 Stack 上有几个与此完全相同的问题,我已经尝试了所有答案,但都无济于事:(我不是 PHP 专家,还没有能够破解它。
下面是我当前的 insert.php 文件,它确实有效,并且确实在数据库中添加了一个新的电子邮件字段。然而,下面的代码是我尝试用来检查现有电子邮件的最新代码,但我收到了发送数据错误。
用于添加电子邮件的工作 PHP 文件
<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydatabase", $con);
$sql="INSERT INTO newsletter (email)
VALUES
('$_POST[mail]')";
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
echo "Thanks for subscribing!"; //Text on page
//header("Location: /thankyoupage.php"); //Redirect page
mysql_close($con)
?>
使用 PDO 更新代码 下面的代码可以添加电子邮件,但仍然允许重复...
<?php
/*** mysql hostname ***/
$hostname = 'localhost';
/*** mysql username ***/
$username = 'root';
/*** mysql password ***/
$password = 'root';
/*** email ***/
$email = '$_POST[mail]';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=mydatabase", $username, $password);
//$query = SELECT count(*) AS `total` FROM `data` WHERE `email` = '{$request}'
$query = SELECT COUNT(*) as 'count' FROM `data` WHERE email = '$_POST[mail]';
$row = mysql_fetch_assoc(mysql_query($query));
if($row['total']) {
echo 'Sorry email already exists';
}
else {
/*** echo a message saying we have connected & added email ***/
echo 'Thanks for subscribing!';
/*** INSERT data ***/
$count = $dbh->exec("INSERT INTO newsletter(email) VALUES ('$_POST[mail]')");
}
/*** echo a message saying we have connected & added email ***/
//echo 'Thanks for subscribing!';
/*** INSERT data ***/
//$count = $dbh->exec("INSERT INTO newsletter(email) VALUES ('$_POST[mail]')");
/*** echo the number of affected rows ***/
/*echo $count;*/
/*** close the database connection ***/
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
提前感谢任何有时间看这个的人:)
额外说明: 我的数据库表称为时事通讯,有 2 个字段(id - 仅限数字)和(电子邮件)
最佳答案
如果电子邮件是一个唯一的键,那会很简单
<?php
mysql_connect("localhost","root","root");
mysql_select_db("howdini");
$email = mysql_real_escape_string($_POST['mail']);
$sql="INSERT IGNORE INTO newsletter (email) VALUES ('$email')";
mysql_query($sql) or trigger_error(mysql_error()." ".$sql);
if (mysql_affected_rows()) {
header("Location: /thankyoupage.php"); //Redirect page
} else {
//already exists
}
关于PHP如何检查MySQL数据库中已有的电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9606304/