我最近将我的代码从使用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);
}
答案 0 :(得分:1)
mysqli_data_seek()函数只返回一个布尔值,表示调用是否成功。它不会从底层sql查询的结果中返回任何内容。
由于您的SQL查询是select count(...)
,因此它将始终在结果集中返回一行。因此,除非sg出错,否则mysqli_data_seek()
的结果将始终为true,等于1.这意味着每个人都可以登录。
您需要通过count()
函数读取返回的值,以确定登录是否成功使用,例如mysqli_fetch_array()。