Php mysqli user_exists not working at all


Php mysqli user_exists not working at all

我已经试过很多次了,我不明白为什么这不起作用。因此,我的注册页面传递所有用户名。我不知道怎么了。对不起,我的英语不好,我真的很累,绝望

function user_exists($username){
$username = htmlspecialchars($username);
$sql = "SELECT username FROM ***** WHERE username = '$username'";
$result = mysqli_query($GLOBALS['$db'], $sql);
if(mysqli_num_rows($result) > 0){
    $errors[] = 'Käyttäjätunnus '''. $_POST['username'] . ''' on jo otettu.';
}
}

我像这样调用这个函数:

if(user_exists($_POST['username']) === true){
        $errors[] = 'Käyttäjätunnus '''. $_POST['username'] . ''' on jo otettu.';
    }

我们来整理一下

function user_exists(mysqli $db, $username){
    $username = htmlspecialchars($username);
    $sql = "SELECT username FROM ***** WHERE username = ?";
    $prep = $db->prepare($sql);
    $prep->bind_param('s', $username);
    $prep->execute();
    $result = $prep->get_results();
    $errors = [];
    if($result->num_rows > 0){
        $errors[] = 'Käyttäjätunnus '''. $username . ''' on jo otettu.';
    }
    return $errors;
}

首先,需要将DB连接注入到函数中。避免使用全局变量。

第二,我们切换到预处理语句。解决SQL注入问题。

第三,返回一个数组。你的错误永远不会以你做事的方式出现。你可以选择如何返回/返回什么,但是,同样,我们不想要全局变量。