注册&登录代码不起作用

时间:2015-10-27 23:54:15

标签: php mysql

我一直在使用像这个视频中的登录/注册系统:https://www.youtube.com/watch?v=Til3oVNlho4&index=7&list=PLE134D877783367C7,但问题是它使用的是Mysql而不是Mysqli函数,这使我几乎不可能理解为一个初学者。基本上,我坚持数据库检查是否" user_exists"功能。有人能指出我正确的方向吗?

<?php


function user_exists($username) {
    include 'core/database/connect.php';
    $username = sanitize($username);
    $sql = "SELECT COUNT(user_id) FROM `users` WHERE username = '$username'";
    $query = mysqli_query($db, $sql);
    return (mysqli_result($query, 0) == 1) ? true : false;
}
function mysqli_result($res,$row=0,$col=0) {
    $numrows = mysqli_num_rows($res);
    if ($numrows && $row <= ($numrows-1) && $row >=0){

        mysqli_data_seek($res,$row);

        $resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);

        if (isset($resrow[$col])) {
            return $resrow[$col];
        }
    }
    return false;
}
?>

然后我正在检查该用户是否存在:

if (user_exists('bill') === true) {
    echo 'exists';
} else {
    echo 'not ok';
}

即使用户在我的数据库中,也始终返回为真。

2 个答案:

答案 0 :(得分:0)

$numrows的条件总是计算为0.因此它返回false,因此不是真的。

答案 1 :(得分:0)

&#13;
&#13;
function user_exists($username) {
  include 'core/database/connect.php';
  $username = sanitize($username);
  $sql = "SELECT user_id FROM `users` WHERE username = '{$username}'";
  $result = mysqli_query($db, $sql);
  $num_rows = mysqli_num_rows($result);
  return $num_rows > 0 ? true : false;
}
&#13;
&#13;
&#13;

试试看,你不需要第二个功能。这段代码不检查验证或实现try / catch块。我修改了你的SQL语句,因为你只需要查看结果是否返回了高于零的结果。