我最近将代码从使用 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/