在開發網站或應用程序的過程中,我們常常會需要從MySQL數據庫中獲取數據并將其顯示在網頁上。PHP是一種流行的服務器端編程語言,與MySQL數據庫完美配合,可以快速高效地連接數據庫并進行操作。本文將介紹如何使用PHP來連接MySQL數據庫,并從中下載文件。
首先,我們需要確保PHP已經安裝并配置好。接著,需要在MySQL中創建一個表格,以存儲要下載的文件的相關信息。例如,我們可以創建一個名為files的表格,其中包含id(自動增量)、filename、filesize、filetype和filedata等字段。文件的二進制數據將存儲在filedata字段中。
CREATE TABLE `files` ( `id` int(11) NOT NULL AUTO_INCREMENT, `filename` varchar(255) NOT NULL, `filesize` int(11) NOT NULL, `filetype` varchar(255) NOT NULL, `filedata` longblob NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
接下來,我們可以編寫一個上傳文件的PHP腳本。該腳本可以從表單中接收文件,并將其保存到MySQL中。以下是一個示例腳本:
<?php //檢查文件是否上傳成功 if ($_FILES['file']['error'] === UPLOAD_ERR_OK) { //獲取上傳文件的名稱、類型、大小和臨時文件路徑 $filename = $_FILES['file']['name']; $filetype = $_FILES['file']['type']; $filesize = $_FILES['file']['size']; $filetmpname = $_FILES['file']['tmp_name']; //將文件二進制數據讀取到字符串中 $filedata = file_get_contents($filetmpname); //連接MySQL數據庫 $conn = mysqli_connect("localhost", "root", "password", "database_name"); if (!$conn) { die("連接失敗:" . mysqli_connect_error()); } //將文件信息插入到數據庫中 $sql = "INSERT INTO `files` (`filename`, `filesize`, `filetype`, `filedata`) VALUES ('$filename', '$filesize', '$filetype', '$filedata')"; $result = mysqli_query($conn, $sql); if ($result) { echo "文件上傳成功"; } else { echo "文件上傳失敗:" . mysqli_error($conn); } //關閉數據庫連接 mysqli_close($conn); } ?>
接下來,我們可以編寫一個下載文件的PHP腳本。該腳本可以從MySQL中獲取文件的二進制數據,并將其作為HTTP響應發送給瀏覽器。以下是一個示例腳本:
<?php //獲取要下載的文件ID if (isset($_GET['id'])) { $id = $_GET['id']; //連接MySQL數據庫 $conn = mysqli_connect("localhost", "root", "password", "database_name"); if (!$conn) { die("連接失敗:" . mysqli_connect_error()); } //從數據庫中獲取文件信息 $sql = "SELECT `filename`, `filesize`, `filetype`, `filedata` FROM `files` WHERE `id`='$id'"; $result = mysqli_query($conn, $sql); if ($result && mysqli_num_rows($result) >0) { $row = mysqli_fetch_assoc($result); $filename = $row['filename']; $filesize = $row['filesize']; $filetype = $row['filetype']; $filedata = $row['filedata']; //設置HTTP響應頭 header("Content-type: $filetype"); header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-length: $filesize"); //發送文件二進制數據給瀏覽器 echo $filedata; } else { echo "文件不存在"; } //關閉數據庫連接 mysqli_close($conn); } else { echo "參數錯誤"; } ?>
以上就是如何使用PHP連接MySQL數據庫并從中下載文件的示例。當然,實際應用中還需要進行一些安全性、性能等方面的優化,以保證程序的穩定運行。