我正在尝试验证我的数据库中是否存在用户名和电子邮件地址,并尝试执行if,elseif,else语句无效。
我想首先检查用户名是否正常 - 显然如果没有,会出现一个echo语句。如果用户名不存在,请运行elseif语句以查看电子邮件地址是否唯一 - 如果不是,则再次显示另一个echo语句。对于最终语句,如果所有其他条件都返回false,我想运行以下代码,以便将用户的输入提交给数据库。
我最初尝试使用语句声明两个变量,以检查username = $ username和email_address = $ email_address,然后检查mysqli_query返回的行数是否大于1。我输入了一个带有相同但是用于电子邮件地址的elseif语句,但后来我在{}括号中使用了以下代码的else语句。
我删除了原始代码,因为抛出了太多错误,并且当我以更优雅的方式执行我所存在的操作时,它可能过于复杂和混乱。
任何帮助都将不胜感激。
if(isset($_POST['submit']))
{
$sql = "INSERT INTO users (first_name, last_name, username, email_address, password, gender, city, country, verification_code, verified, sign_up_date) VALUES (
'$first_name',
'$last_name',
'$username',
'$email_address',
'$password',
'$gender',
'$city',
'$country',
'$verification_code',
'1',
'$sign_up_date')";
$result = mysqli_query($conn,$sql);
header("Location:confirmation.php");
}
答案 0 :(得分:0)
您想要的是对数据进行完整性检查。您应该检查数据库中的 。最简单的方法是使用唯一约束/索引:
create unique index unq_users_username on users(username);
create unique index unq_users_email on users(email);
如果您尝试插入或更新行以使其违反这些约束,那么您的数据修改步骤将失败并显示错误。
答案 1 :(得分:0)
您需要为它们创建索引。 使用以下命令创建索引:
CREATE UNIQUE INDEX index_name ON table_name (column_name)
查看此链接以获取更多信息:https://www.w3schools.com/sql/sql_create_index.asp
答案 2 :(得分:0)
您可以先编写一个函数来检查数据库,例如:
$errors = []; // you can add errors to this array.
if (isset($_POST['submit']))
{
// first do your validation here against empty values and invalid email
$sql = "SELECT * from users where email='$email' and username='$username'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
$errors[] = "Username and email has been taken.";
}
if (!empty($errors))
{
// loop through your errors and echo them
} else {
// insert your values into the database
}
}