Pero .. tu archivo en tu BBDD sólo tienes la referencia del nombre del archivo (y/o con su ruta hacia el mismo) o el archivo lo tienes en "binario" en tu BBDD (sobre un campo tipo BLOB o similar ..)?
En cualquier caso .. las cabceras HTTP para entregar un archivo al cliente (navegador) para iniciar su descarga (Lo de "archivos adjuntos"? .. se empleraría más bien el término para e-mails? .. ), serían (realmente hay muchas combinaciones.. algunas van mejor para ciertos navegadores/clientes otras no tanto ..):
Código PHP:
header('Content-type: application/force-download');
header('Content-Transfer-Encoding: Binary');
header('Content-length: '.filesize($file));
header('Content-disposition: attachment; filename='.basename($file));
header()
www.php.net/header
Tienes más comentarios al respecto en la documentación de PHP sobre la función header() en los comentarios de los usaurios (abajo).
Si tienes el nombre del archivo listo .. lo obtienes previa consulta SQL a tu BBDD y lo entregas al "buffer de salida" de PHP usando:
Código PHP:
readfile($file);
(Siendo $file el nombre/ruta de tu archivo a descargar).
Un saludo,