2011-03-14 36 views
1

我正在創建一個網站,並且新建了php和mysql。我今天早上儘可能多地閱讀,我已經註冊並登錄了所有工作,以及用戶可以用來提交內容的表單。使用php和MySQL將多個長文本存儲在數據庫中時的注意事項

我的問題具體是我應該如何存儲用戶提交的內容。內容基本上是文章。就目前而言,我爲所有存儲其名稱,ID和密碼的用戶提供了一個數據庫,但每當有人創建帳戶時,我都會生成一個新數據庫以存儲他們提交的任何文章。這有什麼問題嗎?此時我不需要搜索文章,但我想保存文章的文章,文章的分類以及發佈時間。

是否爲每個簽署了不良想法的用戶都創建了一個新的數據庫?另外,我想知道關於記憶的問題。對於所有這些填充大量服務器硬盤空間的內容,我是否應該考慮實際情況?

回答

2

當使用數據庫中的主要關注的是SQL Injection。使用參數化查詢或轉義所有數據。在用戶表中也不存儲明文密碼。使用散列和鹽。

在架構,而不是我會用與表用戶(包括ID字段),幷包含用戶ID的物品表中同一數據庫的每個用戶創建一個新的數據庫。這應該足以知道每篇文章的作者是誰。

+0

我幾乎錯過了你的答案在這裏。簡而言之,也是重點。非常感謝。 – Championcake 2011-03-14 22:01:51

1

創建爲每個用戶一個新的數據庫肯定是在任何可能的情況可以想象錯誤的做法,因爲它違背了關係型數據庫的目的。

你應該(可能)會做什麼是創建一個物品表中包含的文章(標題,內容等),以及包含用戶數據的用戶表。根據您的數據模型,您可以爲每篇文章(外鍵)在db行中存儲作者數據,或者如果單個文章可以有多個作者,則可以將連接(關係)存儲在單獨的表中。

+0

非常感謝。這可能是我最終做到的。在這一點上,我不一定需要搜索數據,但如果需要,這可以讓我這樣做。然而,這引發了另一個問題 - 數據庫在什麼時候會變得太大而無法高效地搜索特定短語的文章? – Championcake 2011-03-14 22:00:29

+0

這個問題真的很難回答。在雲計算的這些日子裏,廉價的硬件,現成的專有技術和工具實際上可以無限擴展,主要和主要的限制就是金錢。無論如何,除非你試圖建立一個能夠吸引大量觀衆的巨大東西,否則你很可能不應該擔心會遇到這樣的限制,但是你的預算是非常有限的,而且會保持這樣的狀態。 – 2011-03-14 22:06:23

+0

很棒的回答。謝謝。 – Championcake 2011-03-14 22:08:34

2

我是一位CMS獨家開發者,已經工作了5年,所以我跳過了這些相同的圈套。

您的解決方案是好的,如果你不介意完全限定的數據庫名稱或處理多個連接切換。我的公司爲一個非常複雜的應用程序做了這件事,但我不得不提到它在連接失敗時很令人沮喪和惱人,而且我們經常遇到連接錯誤問題。

在我個人的工作,我寧願只使用一個數據庫,添加用戶或公司ID字段中的每個條目。這樣,如果由於某種原因,我想從一個賬戶彙總到下一個賬戶,這是一塊蛋糕。嘗試搜索數據庫絕對不是一件有趣的工作。主要內容字段(正文,內容等)幾乎總是一個MySQL文本字段,以避免用完現場空間。確保在插入時執行某種數據清理以避免sql注入。 Mysql_real_escape_string通常會這樣做。

從空間角度來看,除非你成長爲一個非常受歡迎的網站,否則你不會遇到問題。我在一臺小型服務器上運行了幾百個中型CMS,沒有任何問題。

+0

感謝您的回答。驗證數據庫名稱和連接切換問題正是我想要防止的事情。關於sql注入的一點也很有幫助,我很擔心這一點。 – Championcake 2011-03-14 21:56:21

相關問題