为什么mysqli_data_seek在将代码从mysql切换到mysqli后没有工作?

时间:2017-06-20 12:27:08

标签: mysql mysqli

我最近将我的代码从使用mysql改为mysqli,并解决了WAMP本地服务器显示的所有错误。但登录机制已被破坏。现在它允许用户登录,无论密码是正确还是不正确。我正在使用以下函数来完成工作,在切换到mysqli之前工作正常。这有什么不对?

function login($registration_id, $password) {
    include 'core/database/connect.php';

    $registration_id = sanitize($registration_id);
    $password = sanitize($password);
    $query = mysqli_query($link, "SELECT COUNT(`sr`) FROM `main_table` WHERE `registration_id` = '$registration_id' AND `password` = '$password'");
    return (mysqli_data_seek($query, 0) == 1) ? $registration_id : false;

    mysqli_close($link);
}

1 个答案:

答案 0 :(得分:1)

mysqli_data_seek()函数只返回一个布尔值,表示调用是否成功。它不会从底层sql查询的结果中返回任何内容。

由于您的SQL查询是select count(...),因此它将始终在结果集中返回一行。因此,除非sg出错,否则mysqli_data_seek()的结果将始终为true,等于1.这意味着每个人都可以登录。

您需要通过count()函数读取返回的值,以确定登录是否成功使用,例如mysqli_fetch_array()