How can PHP be used to format and deliver multiple files from a database for download?

When dealing with multiple files stored in a database that need to be downloaded, PHP can be used to retrieve the files from the database, format them for download, and deliver them to the user. One way to achieve this is by using PHP to create a dynamic download script that fetches the files from the database based on user input or a specific query, then sends the files to the user as downloadable content.

<?php
// Connect to database
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Fetch files from database based on query
$query = "SELECT file_name, file_data FROM files_table WHERE condition = value";
$result = $conn->query($query);

// Loop through results and output files for download
while ($row = $result->fetch_assoc()) {
    $file_name = $row['file_name'];
    $file_data = $row['file_data'];

    // Set appropriate headers for download
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="' . $file_name . '"');

    // Output file data
    echo $file_data;
}

// Close database connection
$conn->close();
?>