我似乎无法弄清楚如何检查我的数据库中是否存在电子邮件.目前,用户使用他们的电子邮件地址使用密码登录我的网站,但目前用户可以使用相同的电子邮件地址多次注册,这会导致我的网站出现重大问题.做过一些研究,但似乎无法解决.
有谁能够帮我?
<?php
if(isset($_POST['add']))
{
$dbhost = 'localhost';
$dbuser = 'user';
$dbpass = 'pass';
$db = "db";
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not send your enquiry at this time please try again later.');
}
$phone = mysql_real_escape_string((string)$_POST['phone']);
$email = mysql_real_escape_string((string)$_POST['email']);
$password = mysql_real_escape_string((string)$_POST['password']);
$firstname = mysql_real_escape_string((string)$_POST['firstname']);
$surname = mysql_real_escape_string((string)$_POST['surname']);
$country = mysql_real_escape_string((string)$_POST['country']);
$nationality = mysql_real_escape_string((string)$_POST['nationality']);
$yearofbirth = mysql_real_escape_string((string)$_POST['yearofbirth']);
$profession = mysql_real_escape_string((string)$_POST['profession']);
$status = mysql_real_escape_string((string)$_POST['status']);
$membertype = 'Registered';
$dateregistered = mysql_real_escape_string((string)$_POST['dateregistered']);
$agreedtoterms = mysql_real_escape_string((string)$_POST['agreedtoterms']);
$sql = "INSERT INTO members
(phone, email, password, firstname, surname, country, nationality, yearofbirth, profession, uniquepin, status, membertype, dateregistered, agreedtoterms)
VALUES('$phone', '$email', '$password', '$firstname','$surname','$country','$nationality','$yearofbirth','$profession','$uniquepin','$status','$membertype','$dateregistered', '$agreedtoterms')";
mysql_select_db($db);
$retval = mysql_query( $sql, $conn )or die(mysql_error());
?>
解决方法:
您可以使电子邮件列具有唯一约束 – 然后在尝试插入时查询将失败.
你也可以查询它….
SELECT `email`
FROM `members`
WHERE `email` = '$email'
LIMIT 1
如果您得到结果,则电子邮件存在.