PHP如何检查数据库中的值是否已准备就绪

PHP如何检查数据库中的值是否已准备就绪,php,mysql,mysqli,Php,Mysql,Mysqli,我正在创建一个注册页面,在检查mysql表中的用户名是否已准备就绪时遇到问题。以下是我使用的代码: $check = mysqli_query($con,"SELECT * FROM users WHERE username='$username'"); if(!empty($check)){ $_SESSION['error'] = "Username allready taken!"; header('Location: ./?page=signup') ; } 有人能帮

我正在创建一个注册页面,在检查mysql表中的用户名是否已准备就绪时遇到问题。以下是我使用的代码:

$check = mysqli_query($con,"SELECT * FROM users
WHERE username='$username'");

if(!empty($check)){
    $_SESSION['error'] = "Username allready taken!";
    header('Location: ./?page=signup') ;
}

有人能帮我吗?

您应该使用准备好的语句来编写查询。但由于原始mysqli无法与它们一起使用,您最好使用

$userExists = (mysqli_num_rows($check) > 0);

好了,各位,你们没能成功回答我的问题,所以我自己想出来了,这是最后一个问题:

$sql = mysqli_query($con, "SELECT * FROM users  
        WHERE username='$usr'
        LIMIT 1"); 

if(mysqli_num_rows($sql) == 1){ 
    $_SESSION['error'] = "Username allready taken!";
    header('Location: ./?page=signup') ;
}

存在sql注入危险。您需要阅读正在使用的函数(mysqli_query)的手动条目。如果在MySQL中将
username
列设置为
UNIQUE
,会发生什么情况?
$sql = mysqli_query($con, "SELECT * FROM users  
        WHERE username='$usr'
        LIMIT 1"); 

if(mysqli_num_rows($sql) == 1){ 
    $_SESSION['error'] = "Username allready taken!";
    header('Location: ./?page=signup') ;
}