在MySQL中存儲(chǔ)用戶提交的數(shù)據(jù)和文件

01

的07

創(chuàng)建表單

有時(shí)從網(wǎng)站用戶收集數(shù)據(jù)并將此信息存儲(chǔ)在MySQL數(shù)據(jù)庫中非常有用。我們已經(jīng)看到您可以使用PHP填充數(shù)據(jù)庫,現(xiàn)在我們將增加允許通過用戶友好的web表單添加數(shù)據(jù)的實(shí)用性。

我們要做的第一件事是創(chuàng)建一個(gè)帶有表單的頁面。對(duì)于我們的演示,我們將做一個(gè)非常簡單的演示:

 

您的姓名:
電子郵件:
位置:

02

of 07

插入-從表單

添加數(shù)據(jù)

接下來,你需要process.php,我們表格將其數(shù)據(jù)發(fā)送到的頁面。以下是如何收集此數(shù)據(jù)以發(fā)布到MySQL數(shù)據(jù)庫的示例:

正如您所看到的,我們首先要做的是為上一頁的數(shù)據(jù)分配變量。然后,我們只查詢數(shù)據(jù)庫以添加此新信息。

當(dāng)然,在我們嘗試之前,我們需要確保表格實(shí)際存在。執(zhí)行此代碼應(yīng)創(chuàng)建一個(gè)可與我們的示例文件一起使用的表:

創(chuàng)建表數(shù)據(jù)(名稱VARCHAR(30),電子郵件VARCHAR(30),位置VARCHAR(30));

03

of 07

添加文件上載

現(xiàn)在你知道如何在MySQL中存儲(chǔ)用戶數(shù)據(jù),所以讓'進(jìn)一步研究如何上傳文件進(jìn)行存儲(chǔ)。首先,讓我們的樣本數(shù)據(jù)庫:

創(chuàng)建表上載(id INT(4)NOT NULL AUTOu增量主鍵,描述CHAR(50),data LONGBLOB,文件名CHAR(50),文件大小CHAR(50),文件類型CHAR(50));

你應(yīng)該注意的第一件事是一個(gè)名為id的字段,它被設(shè)置為AUTO?增量。這種數(shù)據(jù)類型意味著t它將計(jì)算為每個(gè)文件分配一個(gè)從1開始到9999的**文件ID(因?yàn)槲覀冎付?位數(shù)字)。您也可能會(huì)注意到我們的數(shù)據(jù)字段稱為LONGBLOB。如前所述,有許多類型的BLOB。TINYBLOB,BLOB,MEDIUMBLOB和LONGBLOB是您的選項(xiàng),但我們將其設(shè)置為LONGBLOB以允許最大的文件。

接下來,我們將創(chuàng)建一個(gè)表單,允許用戶上傳她的文件。這只是一個(gè)簡單的形式,顯然,如果你愿意,你可以穿上衣服:

說明:

要上傳的文件:

一定要注意enctype,這非常重要!

04

of 07

將文件上載到MySQL

接下來,我們需要實(shí)際創(chuàng)建upload.php,它將獲取我們的用戶文件并將其存儲(chǔ)在我們的數(shù)據(jù)庫中。以下是樣本編碼upload.php.

文件ID:$ID";打印"

文件名:$formdataName
&##34;;print"

文件大小:$formdata
";print"

文件類型:$form?data?Type

&##34;;打印"要上傳另一個(gè)文件,請(qǐng)單擊此處"?>

在下一頁了解更多有關(guān)實(shí)際操作的信息。

05

of 07

添加上傳解釋

這個(gè)代碼實(shí)際做的第一件事是連接到數(shù)據(jù)庫(您需要用實(shí)際的數(shù)據(jù)庫信息替換它。)

接下來,它使用ADDSLASHES函數(shù)。這樣做的是在文件名中添加反斜杠,以便我們?cè)诓樵償?shù)據(jù)庫時(shí)得到錯(cuò)誤。例如e、 如果我們有Billy'sFile.gif,它將把它轉(zhuǎn)換成Billy'sFile.gif. FOPEN打開該文件,FREAD航天小知識(shí)是讀取的二進(jìn)制安全文件,以便在需要時(shí)將ADDSLASHES應(yīng)用于文件中的數(shù)據(jù)。

接下來,我們將表格收集的所有信息添加到數(shù)據(jù)庫中。您會(huì)注意到我們首先列出了這些字段,然后列出了第二個(gè)值,所以我們不會(huì)意外地嘗試將數(shù)據(jù)插入到第一個(gè)字段(自動(dòng)分配ID字段)中

科普_1

最后,我們打印出數(shù)據(jù)供用戶查看。

06

of 07

檢索文件

我們已經(jīng)學(xué)會(huì)了如何從MySQL數(shù)據(jù)庫中檢索原始數(shù)據(jù)。同樣,將文件存儲(chǔ)在MySQL數(shù)據(jù)庫中也不會(huì)'如果沒有',則不是很實(shí)用;無法檢索它們。我們將學(xué)習(xí)如何做到這一點(diǎn)的方法是根據(jù)每個(gè)文件的ID號(hào)為其分配一個(gè)URL。如果您記得我們上傳文件時(shí),我們會(huì)自動(dòng)為每個(gè)文件分配一個(gè)ID號(hào)。當(dāng)我們調(diào)用文件時(shí),我們將在這里使用它。將此代碼保存為download.php

現(xiàn)在要檢索我們的文件,我們將瀏覽器指向:http://www.yoursite.com/download.php?id=2(用要下載/顯示的任何文件id替換2)

這個(gè)代碼是做很多事情的基礎(chǔ)。以此為基礎(chǔ),您可以添加一個(gè)數(shù)據(jù)庫查詢來列出文件,并將其放入下拉菜單中供人們選擇?;蛘吣梢詫D設(shè)置為隨機(jī)創(chuàng)建的數(shù)字,以便每次訪問一個(gè)人時(shí)都會(huì)隨機(jī)顯示與數(shù)據(jù)庫不同的圖形??赡苄允菬o盡的。

07

257 of 07 258

刪除文件

以下是一種從數(shù)據(jù)庫中刪除文件的非常簡單的方法。你想小心??!將此代碼保存為刪除.php

像我們之前下載文件的代碼一樣,此腳本只需鍵入U(xiǎn)RL即可刪除文件:http://yoursite.com/remove.php?id=2(用要?jiǎng)h除的id替換2。)出于顯而易見的原因,您希望小心使用此代碼。這當(dāng)然是為了演示,當(dāng)我們實(shí)際構(gòu)建應(yīng)用程序時(shí),我們希望提供保護(hù)措施,讓用戶確定他們是否要?jiǎng)h除,或者可能只允許有密碼的人刪除文件。這個(gè)簡單的代碼是我們將做所有這些事情的基礎(chǔ)。