PHP MYSQLi查询仅访问第一行的用户

时间:2014-12-25 00:20:59

标签: php mysqli

依次点击上面的链接,获取用户名&密码登录基于Web的系统,使用PHP,JavaScript和MySQL数据库开发。 按顺序,按照上面的链接,获取用户名&密码登录基于Web的系统,使用PHP,JavaScript和MySQL数据库开发。

依次点击上面的链接,获取用户名&密码登录基于Web的系统,使用PHP,JavaScript和MySQL数据库开发。

2 个答案:

答案 0 :(得分:1)

您只测试表用户的第一行。使用if语句进行测试时,返回的第一行是用户是否尝试登录。

相反,您可以执行以下操作:

function user_exists($username) {

    $username = sanitize($username);
    $query = mysqli_query($_POST['x'], "SELECT * FROM users where username ='".$username."'");
    $row = mysqli_fetch_array($query);
    if(count($row)>0) {
        return true;
    }
    else return false;       
}

这将查找具有给定用户名的所有行。当然,测试密码或其他东西将取决于实际迭代所获取的数组,而不仅仅是检查计数。

答案 1 :(得分:0)

我昨天终于做到了,谢谢你们。它运作良好,但需要在其他相关功能(这是失败的)中重复,是的,我忘了我的错误报告被关闭,让自己的生活更加艰难:

function user_exists($username) {

    $username = sanitize($username);
    $query = mysqli_query($_POST['x'], "SELECT `username` FROM `users` WHERE `username` = '$username'");

    while($row = mysqli_fetch_assoc($query)){
        $rows[] = $row;
    }
    if (count($rows) > 0) {
        return true;} else return false;
}

登录功能也是如此:

function login($username, $password){
    $username = sanitize($username);
    $password = md5($password);
    $query = mysqli_query($_POST['x'], "SELECT `userid` FROM `users` WHERE `username` = '$username' AND `password` = '$password'");
    while($row = mysqli_fetch_array($query)){
        $rows[] = $row;
    }
    if(count($rows) > 0) {
        $userid = user_id_from_username($username);
        return $userid; }  else return false; 

再次感谢!