因此,经过一段时间的努力寻找安静之后,我遇到了需要使用store_result()函数将返回的行(从select查询)传输到我不知道在哪里的解决方案,但似乎没有必要,甚至是昂贵的传输结果,然后检查行数。为什么在确定选择查询的PHP准备语句中返回的行数时存储结果集?
例如..
$sql = "SELECT * FROM login_info WHERE user_id=? AND password=?";
//Prepare statement
$stmt = $conn->prepare($sql);
//bind parameters to prepared statement
$stmt->bind_param("ss",$userId,$password);
//execute query
$stmt->execute();
//fetch number of rows returned
echo $count = $stmt->num_rows;
$计数值为0。但之后加入stmt- $> store_result();到上面的代码它的工作。
$sql = "SELECT * FROM login_info WHERE user_id=? AND password=?";
//Prepare statement
$stmt = $conn->prepare($sql);
//bind parameters to prepared statement
$stmt->bind_param("ss",$userId,$password);
//execute query
$stmt->execute();
//store result
$stmt->store_result();
//fetch number of rows returned
echo $count = $stmt->num_rows;
现在代码在count变量中打印行数为1。
请参阅说明书。这里是一个链接http://php.net/manual/en/mysqli.store-result.php –
要求所有行只是为了计算没有多大意义。如果你只需要计数,明确地要求它'SELECT COUNT(*)总计...'。如果您确实需要这些行,请在检索它们时进行计数。就你而言,你为什么首先需要点数?你希望有许多用户使用相同的用户名和密码吗? –
@ÁlvaroGonzález不,但这是我接受培训的方式,检查计数是否大于0,显然计数总是1. – phpNoob