Wil*_*ill 1 php oop mysqli mysql-num-rows
这是代码:
$q = $this->db->prepare("SELECT id FROM `users` WHERE username=? AND password=? LIMIT 1");
$q->bind_param('ss', $username, $password);
$q->execute();
printf('Rows returned: %i', $q->num_rows);
Run Code Online (Sandbox Code Playgroud)
我正在使用MySQLi尝试检查用户登录凭据.一切正常,查询被执行并返回数据(我已单独检查过)但我只得到这个输出:Rows returned:
这里有什么不对吗?我是使用MySQLi的新手,但是通过PHP.net示例,这段代码没有任何问题.干杯.
来自文档:
如果您不使用mysqli_stmt_store_result(),并且immediatley在执行预准备语句后调用此函数,则此函数通常会返回0,因为它无法知道结果集中有多少行,因为结果集未保存在内存中然而.
mysqli_stmt_store_result()将结果集保存在内存中,因此您可以在执行语句并保存结果集后立即使用此函数.
所以你需要将它改为:
$q->bind_param('ss', $username, $password);
$q->execute();
$q->store_result();
printf('Rows returned: %d', $q->num_rows);
Run Code Online (Sandbox Code Playgroud)