Hola @rach,
para hacer un archivo de texto que se descargue, la mecánica es esta:
<?php
// Tipo MIME del archivo
header('Content-Type: text/plain');
// Indica que lo descargue
header('Content-Disposition: attachment; filename="generado.txt"');
// Registro ficticio para la prueba
$linea = array("Juan", "Perez", 23, "[email protected]");
// Bucle, que en tu caso recorrerá el resultado de la query
foreach($linea as $l){
print("$l\n");
}
?>
Lo único importante es que al invocar a header(), el script no tiene que tener ninguna otra salida anterior, porque interrumple las cabeceras HTTP, ni posterior, porque aparecerá como parte del archivo.
Saludos!