ricmetal Posted August 1, 2013 Share Posted August 1, 2013 hi guys so im getting 1 result row from an empty table, when querying using min... i dont know what this should be... this is my code: $theTrout = 1; $stmt = $mysqli->prepare("SELECT MIN(news_date_year) FROM news WHERE news_published = ? AND user_published = ? "); $stmt->bind_param('ii', $theTrout, $theTrout); $stmt->execute(); $stmt->bind_result($oldestYear); $stmt->store_result(); echo $stmt->num_rows; // echoes 1 anyone know why? thanks cheers regards Link to comment https://forums.phpfreaks.com/topic/280715-min-returning-1-on-empty-table/ Share on other sites More sharing options...
Barand Posted August 1, 2013 Share Posted August 1, 2013 because there is 1 row returned containing the value of the min date Link to comment https://forums.phpfreaks.com/topic/280715-min-returning-1-on-empty-table/#findComment-1442977 Share on other sites More sharing options...
ricmetal Posted August 1, 2013 Author Share Posted August 1, 2013 okay but this is a quirk sql has, right? i mean, i should be getting 0 rows returned (seeing the table is empty) Link to comment https://forums.phpfreaks.com/topic/280715-min-returning-1-on-empty-table/#findComment-1442998 Share on other sites More sharing options...
DavidAM Posted August 1, 2013 Share Posted August 1, 2013 Not really a "quirk". When you SELECT an aggregate, you will always get a row. If the table is empty, or no rows match the WHERE clause, the "MIN" value is NULL. You need to check the value that is returned: if (empty($oldestYear)) ... Or you can add COUNT(*) to the query and see how many rows matched the WHERE clause (zero if the table is empty). Even in that case, you will get 1 row returned. Link to comment https://forums.phpfreaks.com/topic/280715-min-returning-1-on-empty-table/#findComment-1443002 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.