Php 检查db prepared语句中是否已存在用户名
我正在尝试检查我的数据库中是否已经存在已发布的用户名。我不确定我会错在哪里。以下其他条件正常工作。当我提交表单时,即使我的数据库中不存在这样的名称,我也会收到“Username take”。任何帮助都将不胜感激。谢谢Php 检查db prepared语句中是否已存在用户名,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试检查我的数据库中是否已经存在已发布的用户名。我不确定我会错在哪里。以下其他条件正常工作。当我提交表单时,即使我的数据库中不存在这样的名称,我也会收到“Username take”。任何帮助都将不胜感激。谢谢 $username = $_POST['username']; $stmt = $mysqli->prepare('SELECT COUNT(*) FROM users WHERE username = ?'); $stmt->bind_param('s', $u
$username = $_POST['username'];
$stmt = $mysqli->prepare('SELECT COUNT(*) FROM users WHERE username = ?');
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->store_result();
if(isset($_POST["submit"]))
{
if(empty($_POST["username"]))
{
echo '<script>alert("Username field empty")</script>';
} else if(empty($_POST["password"])) {
echo '<script>alert("Password field empty")</script>';
} else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo '<script>alert("Incorrect email format")</script>';
} else if($stmt->num_rows > 0) {
echo '<script>alert("Username taken")</script>';
$username=$\u POST['username'];
$stmt=$mysqli->prepare('SELECT COUNT(*)FROM username=?'的用户);
$stmt->bind_参数($s',$username);
$stmt->execute();
$stmt->store_result();
如果(isset($_POST[“提交”]))
{
如果(空($_POST[“username”]))
{
回显“警报”(“用户名字段为空”);
}else if(空($_POST[“password”])){
回显“警报”(“密码字段为空”);
}如果(!filter_var($email,filter_VALIDATE_email)){
回显“警报”(“不正确的电子邮件格式”);
}else if($stmt->num_rows>0){
回显“警报”(“获取用户名”);
selec count(*)…
始终返回1条记录和计数。因此,当您选中else if($stmt->num_rows>0)时< /代码>,它总是返回true。应该检查由计数返回的值,而不是记录的数量。谢谢,它工作了!没有意识到计数总是返回1记录。如果这解决了您的问题,请考虑标记是回答-