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.