Home > Article > Backend Development > Why Does MySQLi's `query()` Method Return an Unexpected Row Count When Using `COUNT(*)`?
MySQLi's Query Method Yields Unexpected Row Counts
When attempting to retrieve the row count of a MySQL table using the COUNT(*) function and the MySQLi object's query() method, you may encounter an unexpected result where the returned row count is always 1. This can differ from the correct result when executing the same query using tools like phpMyAdmin.
Understanding the Issue
The num_rows property of the MySQLi_Result object reflects the number of rows in the result set returned by the executed query. However, when using the COUNT(*) function, the result is a single row containing the count value instead of multiple rows like in regular query results.
The Correct Approach
To obtain the correct count value using MySQLi, you need to fetch the single result row from the MySQLi_Result object and retrieve the count value from that row. This can be achieved using the fetch_row() method, which returns an array of column values from the first row in the result set.
Here's an example demonstrating the correct approach:
$result = $db->query("SELECT COUNT(*) FROM `table`"); $row = $result->fetch_row(); $count = $row[0]; echo 'Row count: ', $count;
This code retrieves the count value from the first row and prints it out.
The above is the detailed content of Why Does MySQLi's `query()` Method Return an Unexpected Row Count When Using `COUNT(*)`?. For more information, please follow other related articles on the PHP Chinese website!