Мне интересно, почему не работает корректно mysqli_num_rows после удаление строки
Поведение функции mysqli_num_rows() зависит от того, используется ли буферизованная или не буферизованная результирующая выборка. Для небуферизованной выборки mysqli_num_rows() не вернет правильное число рядов до тех пор, пока все ряды не будут получены и обработаны.