没有经验,所以感谢任何帮助。
我希望构建一个PHP来确认用户注册是否具有唯一的电子邮件地址。如果是唯一的,那么添加到sql数据库,并回显各自的值。
这就是我所拥有的 - 如果电子邮件地址重复,则会产生回显值,但不会生成回显值,如果数据库是唯一的,则不会更新数据库。
<?php
$email= $_GET["email"];
$firstname = $_GET["firstname"];
$lastname = $_GET["lastname"];
$con = mysql_connect("user","db","pass");
mysql_select_db("db");
$query1 = "SELECT * FROM `db` WHERE `Email` = '$email'";
$result = mysql_query($query1);
if ( mysql_num_rows ($result) == 1 )
{$value="Already registered";
}
else
{
mysql_query("INSERT INTO db (Email, FirstName, LastName) VALUES ('$email','$firstname','$lastname')");
mysql_close($con);
$value="Confirmed";
}
echo $value;
答案 0 :(得分:2)
不是获取所有行,而是只选择其中一行。它会节省大量内存。
$query1 = "SELECT 1 FROM `db` WHERE `Email` = '$email' LIMIT 1";
然后是以下一行
if ( mysql_num_rows ($result) == 1 )
在逻辑上是正确的。否则,如果数据库中有2个或更多记录,则结果为false。通过我的修复,if
将是合乎逻辑的。
另一个解决方案是选择行数,但由于电子邮件在数据库中是唯一的,所以没有必要做像
这样的事情。$query1 = "SELECT COUNT(*) FROM `db` WHERE `Email` = '$email'";
但是这样,您可以检查结果,而不是检查结果中的行数,而不是检查结果中的行数。但同样,由于您的数据库的逻辑是只有一封电子邮件,因此无需检查其中有多少电子邮件,因为结果将为0或1:)
答案 1 :(得分:0)
作为你的if条件
if(mysql_num_rows($ result)== 1)
这意味着如果您有一个>1
重新编码false
,那么请将其更改为
if ( mysql_num_rows ($result) >0 )
答案 2 :(得分:0)
$query1 = mysql_query("SELECT COUNT(*) AS num FROM `db` WHERE `Email` = '$email'");
$result = mysql_fetch_assoc($query1);
if ($result['num'] == 1)
{
// already registered
}
else
{
}
你也完全忘记了sql注入。您需要确保用户提供的所有值都可以安全地运行数据库。你可以使用mysql_real_escape_string()来做到这一点。即:
$email = mysql_real_escape_string($_GET['email']);
答案 3 :(得分:0)
要解决这个问题,我会使用Ajax:
php check_email.php
$email= $_POST["email"];
$firstname = $_GET["firstname"];
$lastname = $_GET["lastname"];
...
$query1 = "SELECT * FROM `db` WHERE `Email` = '$email'";
$result = mysql_query($query1);
if (mysql_num_rows ($result)){
echo "yes";
} else {
mysql_query("INSERT INTO db (Email, FirstName, LastName) VALUES ('$email','$firstname','$lastname')");
echo "no";
}
<强> HTML 强>:
<form method="post" action=""/>
<input name="email" type="text" id="email" value=""/>
<input name="firstname" type="text" id="firstname" value=""/>
<input name="lastname" type="text" id="lastname" value=""/>
<input name="Submit" type="button" id="submit" value="Go"/>
<div id="msg"></div>
</form>
<!--load latest version of jquery-->
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
//JS (use jquery):
$("#submit").click(function () {
$.ajax({
type: "POST",
url: "check_email.php",
dataType: "text",
//send data to php
data: {email:$("#email").val(),firstname:$("#firstname").val(),lastname:$("#lastname").val()},
//get answers
success: function (response) {
if(responce=="yes") $("#msg").html("email exists!")
else if (responce=="no") $("#msg").html("Email was successfully added to the database!")
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
});
</script>