繁体   English   中英

PHP如何在MySQL数据库中检查电子邮件?

[英]PHP how to check for email already in MySQL database?

嗨,我正在呼吁Stackoverflow上所有PHP神的帮助:)

我已经创建了一个电子邮件注册表单(只有一个电子邮件字段),它能够使用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();
}
?>

提前感谢任何有时间看看这个:)的人

额外注意事项: 我的数据库表名为newsletter,有2个字段(id - 仅限数字)&(email)

如果电子邮件是一个唯一的密钥,那将很简单

<?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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM