php - 为什么将代码从 mysql 切换到 mysqli 后 mysqli_data_seek 不起作用?

标签 php 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);
}

最佳答案

mysqli_data_seek()函数仅返回一个 bool 值,指示调用是否成功。它不会从底层 SQL 查询的结果中返回任何内容。

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

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

关于php - 为什么将代码从 mysql 切换到 mysqli 后 mysqli_data_seek 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44653073/

相关文章:

php - MySQL查询重复内容

PHP 递增最大 ID

php - 在 php 中打印 mysql 命令提示符 "\G"输出

php - 无法向表中插入数据

php - 在 mysql ORDER BY 中使用 case

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

php - 无法弄清楚如何在$ .ajax/PHP/MySQL插入中查找错误

javascript - 使用 for 循环来识别 html .classes (jQuery)

C# Windows 窗体应用程序 - 在安装过程中保存配置/使用外部配置

python - 如何从数据库列中的 python 数组中仅选择元素