mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given
Значит в $result записан не результат запроса, а логическое значение. Читаем описание функции mysqli_query:
Возвращает FALSE в случае неудачи. В случае успешного выполнения запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query() вернет объект mysqli_result. Для остальных успешных запросов mysqli_query() вернет TRUE.
Запрос SELECT, значит из логических значений могло вернуться только FALSE, следовательно в запросе ошибка.
Внимательно читаем запрос - вот она, лишняя запятая.
И, до кучи, ваш код не защищён от SQL-инъекций. Вместо прямой подстановки переменных в запрос используйте плейсхолдеры.