num_rows方法不返回所选行的数量

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示例,这段代码没有任何问题.干杯.

irc*_*ell 5

来自文档:

如果您不使用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)