Eu não acho que vai funcionar desta forma. Quando você fecha a instrução (por exemplo,
$menu_stmt->close();
) você também desaloca o identificador de instrução. Portanto, na segunda vez no loop, você não terá mais as instruções preparadas disponíveis para trabalhar. Tente fechar as instruções após a execução do loop.