Home >Database >Mysql Tutorial >Why Does `mysqli_num_rows()` Return a Boolean Instead of a Result Set?

Why Does `mysqli_num_rows()` Return a Boolean Instead of a Result Set?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-07 19:49:14751browse

Why Does `mysqli_num_rows()` Return a Boolean Instead of a Result Set?

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn