Php 正在使用准备好的语句验证数据库中是否已存在用户名。。。如何?
我正在尝试验证用户名,以确保我的数据库中不存在相同的用户名。我试图用事先准备好的陈述来做到这一点 我现在正试图通过检查STMT返回的内容来查看post是否存在。我真的不确定我的方向是否正确 我做错了什么 编辑:尽管我尝试了别人的建议,但我仍在向数据库中添加重复的用户名Php 正在使用准备好的语句验证数据库中是否已存在用户名。。。如何?,php,validation,mysqli,prepared-statement,Php,Validation,Mysqli,Prepared Statement,我正在尝试验证用户名,以确保我的数据库中不存在相同的用户名。我试图用事先准备好的陈述来做到这一点 我现在正试图通过检查STMT返回的内容来查看post是否存在。我真的不确定我的方向是否正确 我做错了什么 编辑:尽管我尝试了别人的建议,但我仍在向数据库中添加重复的用户名 if (empty($username)) { $usernameError = "Required!"; } else if (preg_match('/^[A-Z \'.-]{2
if (empty($username))
{
$usernameError = "Required!";
}
else if (preg_match('/^[A-Z \'.-]{2,20}$/i', $username))
{
if ($stmt1 = $dbc->prepare("SELECT username FROM users WHERE username = ?"))
{
$stmt1->bind_param('s', $username);
$stmt1->execute();
if($stmt1->num_rows>0)
{
$usernameError = "Username already exists!";
}
else
{
$usernameError = "";
}
$stmt1->close();
}
}
else
{
$usernameError = "Incorrect Username!";
}
不要使用if($stmt!=FALSE)
使用if($stmt->num\u rows>0)
使用这种方法很有效
(发布,因为无法删除带有答案的问题)
与选择任何其他数据的方式完全相同-通过对服务器运行查询。@根据您的常识,这不会太糟糕,但只是尝试学习使用准备好的语句。没有它们,我就不会有那么多麻烦。学习并不意味着写随机代码,然后问为什么它不起作用。遵循教程是一个相当好的方法,我检查过了,我担心即使数据库中已经存在相同的用户名,我仍在进行注册。+1指出我的错误,
STMT=!FALSE在我的情况下不起作用。
if($stmt->num_rows>0){
$usernameError = "Username already exists!";
}else{
$usernameError = "";
}
if($stmt->fetch())
{
$usernameError = "Username already exists!";
}
else
{
$usernameError = "";
}