PHP & MySQL: Resolving "mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given" Error
The error "mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given" indicates that the input provided to the mysqli_num_rows() function is not a valid result set. This error is often encountered when the input argument is not a result of a successful query execution.
In this specific case, the error occurs in the following line of PHP code:
if (mysqli_num_rows($dbc) == 0) {
Here, the variable $dbc is used as the input to mysqli_num_rows(), but it is returning false because the query executed on $dbc contains an error:
$dbc = mysqli_query($mysqli,"SELECT users.*, profile.* FROM users INNER JOIN contact_info ON contact_info.user_id = users.user_id WHERE users.user_id=3");
The error in the query is the missing JOIN keyword between the users and profile tables:
SELECT users.*, profile.* --You do not join with profile anywhere. FROM users INNER JOIN contact_info ON contact_info.user_id = users.user_id WHERE users.user_id=3");
To fix the issue, you should modify the query as follows:
$dbc = mysqli_query($mysqli,"SELECT users.*, profile.* FROM users INNER JOIN profile ON contact_info.user_id = users.user_id WHERE users.user_id=3");
By correcting the query, the mysqli_num_rows() function will now receive a valid result set and be able to determine whether the number of rows in the result is zero.
The above is the detailed content of Why Does `mysqli_num_rows()` Return a Boolean Instead of a Result Set?. For more information, please follow other related articles on the PHP Chinese website!