2012-07-17 17 views
-2

我需要將文本和圖像存儲在同一個字段中嗎? 這怎麼可以在php中使用mysql數據庫實現? 我已經使用BLOB來存儲過去的圖像。 我應該使用哪種數據類型來解決這個問題?如何將圖像和文本存儲在mysql數據庫的相同字段中?

這將如何工作......?

+4

不要這樣做。更好地存儲他們分開。 – 2012-07-17 07:54:28

+2

它是反規範化你的數據庫...所以請避免這件事,並將其分開 – Jalpesh 2012-07-17 07:55:11

+1

明顯的問題是「爲什麼?」 – 2012-07-17 07:55:17

回答

5

首先要說的是,不要這樣做!數據庫中的列應該是原子的,這意味着它們只能保存一條信息。這是第一範式的基本原則。如果您嘗試將多個數據項填充到列中,則會違反該規則,並且您將在稍後體驗到一個受傷的世界。從理論上講,你可以使用任何訪問數據庫的前端將數據序列化爲一個字符串並存儲它(例如,在php中,你可以執行$dataToStore = serialize (array 'Some string', $someData);)。然後,您將使用反序列化將圖像數據和文本提取回單獨的項目。

但你爲什麼要這麼做?這是額外的工作,你不需要做的,爲了使你的數據庫設計不那麼優化。簡單地將另一列添加到要存儲數據的表中,一個用於文本,另一個用於圖像,這有什麼問題?

如果你不認爲你的方法是一個問題,那麼從一個被僱傭的人來處理一個充滿了序列化數據的數據庫就可以了。這是一個巨大的問題。它使得使用數據庫幾乎不可能。您必須將數據轉換爲您正在使用的腳本語言,然後將其反序列化,然後才能對其執行任何操作。您不能使用SQL語句查詢序列化數據。

+0

其實我正在爲我的網站實施一個小問卷。所以這些問題有時候是文本和圖像的組合。注意:可以有1個選項和任意位置的多個圖像:即在文本的開始,文本的中間和結束時文本.....如何實現這一點,以便我能夠正確顯示選項內容的正確順序的文本和圖像..... – 2012-07-17 08:04:12

+0

如果可以有多個圖像,那麼這意味着你有一個到很多關係。您可以使用從屬表爲這些圖像建模,並使用外鍵將這些圖像綁定回其依賴的父表中的行。你真的需要重新考慮你的數據庫設計。這聽起來像是目前可怕的錯誤。 – GordonM 2012-07-17 08:09:16

+0

我將選項當前僅保存爲文本。現在我添加了該功能以在選項中顯示圖像以及...我將如何鏈接圖像和文本...如何知道圖像和文本的順序選項.....? – 2012-07-17 08:11:38

相關問題