【发布时间】:2020-12-09 20:17:18
【问题描述】:
如果邮箱地址已经存在于数据库中,那么程序不应该被执行并显示“邮箱已经注册”的错误,但它不是这样工作的。代码对我来说看起来不错,没有语法错误。但没有像我想要的那样工作,而不是向我展示存在电子邮件的错误。它执行表单并在 mysql 数据库中插入重复的电子邮件地址。
这是代码,如果有人可以提供帮助,请告诉我。
<?php
include('dbconnection.php');
if(isset($_REQUEST['rSignup'])){
if(($_REQUEST['rName'] == "") || ($_REQUEST['rEmail'] =="") || ($_REQUEST['rPassword'] =="")){
$regmsg = '<div class="alert alert-warning mt-2" role="alert">All Fields are Required</div>';
}else{
$sql = "SELECT r_email FROM requestorlogin_tb WHERE r_email='".$_REQUEST['rEmail']."'";
$result = $conn->query($sql);
if($result->num_rows==1){
$regmsg = '<div class="alert alert-warning mt-2" role="alert">Email ID Already Registered</div>';
} else{
$rName = $_REQUEST['rName'];
$rEmail = $_REQUEST['rEmail'];
$rPassword = $_REQUEST['rPassword'];
$sql = "INSERT INTO requesterlogin_tb(r_name,r_email,r_password) VALUES('$rName','$rEmail','$rPassword')";
if($conn->query($sql) == TRUE){
$regmsg = '<div class="alert alert-success mt-2" role="alert">Account Successfully Created</div>';
} else{
$regmsg = '<div class="alert alert-danger mt-2" role="alert">Unable to Create Account</div>';
}
}
}
}
?>
【问题讨论】:
-
在数据库上添加唯一约束,然后无论您的 php 做什么,都无法插入重复的电子邮件
-
我怀疑您的问题出在此处:
$result->num_rows==1除非您每次都清除数据库?你可能想检查$result->num_rows > 0 -
然后你想去研究准备好的陈述,因为:
WHERE r_email='".$_REQUEST['rEmail']."'"是一场等待发生的灾难 -
所以我应该试试这个:$result->num_rows > 0
-
我已更改但无法正常工作并且出现错误,注意:尝试在第 9 行获取 C:\xampp\htdocs\NewOSMS\UserRegistration.php 中非对象的属性 'num_rows'
标签: php html phpmyadmin