Флаг -p
требует ввода пароля для пользователя.Поскольку вы используете конфигурацию по умолчанию (без пароля), вы должны удалить флаг.
exec("C:/xampp/mysql/bin/mysqldump -u root > my_db.sql");
с этим флагом, он просто будет зависать, ожидая вашего пароля.
Если вашУ пользователя был пароль, который вы могли бы сделать:
$output = exec("C:/xampp/mysql/bin/mysqldump -u root -pMyPassword > my_db.sql");
, но это плохая идея, потому что, если скрипт когда-либо будет открыт, ваш пароль root будет известен.