Fixed: Warning - mysqli_num_rows() Expects Parameter 1 to be mysqli_result, Boolean Given - Find Out How!

When working with PHP and MySQL, you might encounter the following warning:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given

This warning occurs when the mysqli_num_rows() function is expecting a mysqli_result object, but it receives a boolean value instead. This usually happens when there is an error in your SQL query or database connection.

In this guide, we will walk you through the steps to fix this warning message and ensure that your code functions as expected.

Step 1: Check Your SQL Query

First, make sure that your SQL query is correct. This is the most common cause of the warning message. If your query is incorrect, the mysqli_query() function will return a boolean false instead of a mysqli_result object.

Here's an example of an incorrect SQL query:

$sql = "SELECT * FROM table_nam"; // table_nam is misspelled
$result = mysqli_query($conn, $sql);

To fix this, correct the spelling of your table name:

$sql = "SELECT * FROM table_name"; // Correct table name
$result = mysqli_query($conn, $sql);

Step 2: Check Your Database Connection

If your SQL query is correct, the next step is to check your database connection. Make sure that your connection is properly established and that you have the correct credentials and settings.

Here's an example of a correct database connection:

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";

$conn = mysqli_connect($servername, $username, $password, $dbname);

if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());

Step 3: Check for mysqli_query() Errors

If your SQL query and database connection are both correct, you may still encounter errors when executing the query. To check for errors, you can use the mysqli_error() function:

$sql = "SELECT * FROM table_name";
$result = mysqli_query($conn, $sql);

if (!$result) {
  die("Error executing query: " . mysqli_error($conn));

This will give you a more descriptive error message, which can help you identify the cause of the problem.

Step 4: Fix the Warning Message

Once you have corrected your SQL query, database connection, and checked for errors, you should be able to fix the warning message. Make sure to only use the mysqli_num_rows() function when you have a valid mysqli_result object:

$sql = "SELECT * FROM table_name";
$result = mysqli_query($conn, $sql);

if ($result) {
  $num_rows = mysqli_num_rows($result);
  echo "Number of rows: " . $num_rows;
} else {
  die("Error executing query: " . mysqli_error($conn));

By following these steps, you should be able to resolve the mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given warning message.


1. What is the mysqli_num_rows() function used for?

The mysqli_num_rows() function is used to get the number of rows in a result set returned by a SELECT query.

2. How do I check if a query returned any results?

You can use the mysqli_num_rows() function to check if a query returned any results. If the number of rows is greater than 0, then the query returned results.

3. Can I use the mysqli_num_rows() function with an INSERT, UPDATE, or DELETE query?

No, the mysqli_num_rows() function is only intended for use with SELECT queries. For INSERT, UPDATE, and DELETE queries, you can use the mysqli_affected_rows() function to get the number of affected rows.

4. What should I do if I get a "Table doesn't exist" error?

Make sure that your table name is spelled correctly and that the table exists in your database. You may also need to check if you have the correct database selected.

5. What is the difference between mysqli_fetch_assoc() and mysqli_num_rows()?

mysqli_fetch_assoc() is used to fetch a result row as an associative array, while mysqli_num_rows() returns the number of rows in a result set.

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.