我一直在尝试使mysqli_stmt_num_rows函数正常工作,但我似乎无法在mysqli_error上出现任何错误,在我看来一切都很好。
$query = ("SELECT * FROM users WHERE user_email= ? ;");
$stmt = mysqli_stmt_init($connection);
if (!mysqli_stmt_prepare($stmt , $query)) {
echo "Error at mysqli_stmt_prepare ".
mysqli_stmt_error($connection);
} else {
mysqli_stmt_bind_param($stmt, 's', $userEmail );
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$result = mysqli_stmt_num_rows($stmt);
if (!$result) {
echo 'Error at $result'. mysqli_stmt_error($stmt);
} else {
echo '$result is working :)';
}
}
我可以使用mysqli_stmt_get_result,但不能使用mysqli_stmt_num_rows。帮助:(
答案 0 :(得分:3)
mysqli_stmt_num_rows()
返回一个介于0
到n
之间的数字,它不返回布尔值。
您正在测试$result
,就好像它是布尔值一样!
现在,如果您的查询返回NO ROWS,则如果这是新用户mysqli_stmt_num_rows()
,它将返回零,并且
if (!$result) {
将零归零,因此运行
echo 'Error at $result'. mysqli_stmt_error($stmt);
尽管这不是错误mysqli_stmt_error($stmt)
,但不会返回错误消息。
您应该做
$result = mysqli_stmt_num_rows($stmt);
if ($result > 0 ) {
echo 'Found that user';
} else {
echo 'Nobody yet registered with that email';
}