2012-04-15 116 views
0

我正在開發一個網站,爲用戶收集和存儲信息。用戶註冊時創建MySQL表

我需要爲每個註冊用戶創建一個表格,以存儲他們正在使用網站搜索的信息。創建的表格將以新註冊用戶的用戶名命名。

然後,當用戶登錄並運行搜索時,收集的數據將使用MySQL插入查詢存儲在數據庫中,其中表名是包含登錄用戶的用戶名的變量,該用戶名也將是表名稱。

我是一個業餘開發人員,到處尋找解決辦法,但我似乎找不到任何與我的問題類似的任何東西。

非常感謝您的幫助!從用戶喜歡

+5

每用戶表是一個非常主要的設計no-no。爲什麼不能有一個SINGLE表,並且每個用戶只有一個RECORD? – 2012-04-15 04:22:31

+1

不是你問,但我不覺得爲用戶創建表是一個好主意。爲什麼不只是用一個用戶名或標識符的巨大表格? – 2012-04-15 04:22:58

+1

「我需要創建一個特定於每個用戶的表格」** NO。停止。**重新思考你在做什麼。 – 2012-04-15 04:23:15

回答

1

動態創建表比使用任何SQL數據庫更浪費時間,並且非常適合游泳。

你沒有找到關於你提到的方法的任何文檔的原因是因爲這個問題通常(幾乎沒有例外)通過將一個或多個表中的所有數據包括在內以及指定哪個實體(用戶)行關聯。在你的情況下,這可能是一個電子郵件地址,或用戶名,或只是一個序列號。

E.g.

| user_id | email | first_name | last_name | fave_color | 
-   -   -    -    -    - 
|  1 | "[email protected]" | "anton"  | "aardvark" | "red"  | 
|  2 | "[email protected]" | "miles"  | "o'brien" | "infrared" | 
|  ... |   |    |    |    | 
+1

外鍵4evar! – 2012-04-15 04:34:58

+1

這似乎比我提出的方法更合乎邏輯。所以我會將用戶唯一標識符插入到搜索結果所在行的表中,然後當用戶想要查看他們收集的數據時,我會使用用戶唯一標識符作爲MySQL選擇查詢中的變量。 – Martin1184 2012-04-15 04:59:03

+1

我不會使用user_email作爲用戶的主鍵。如果用戶更改其電子郵件地址,您將丟失數據(不良)並失去參照完整性(不良),或者必須對其所有記錄進行大規模更新(錯誤)。爲了解釋伊格納西奧,「替代鍵4evar!」更新了 – wjl 2012-04-15 08:08:37

0

先取名字:

$fullname="$fname"."_"."$lname"; 

然後,寫這樣的查詢創建名稱

$sql="CREATE TABLE $fullname(ALL THE COLLUMNS YOU WANT TO CREATE)"; 
$result1=mysql_query($sql, $db_link); 

這個查詢是從我的項目表。在wampserver中運行良好。

+2

我相信世界上所有的'約翰史密斯'人都會感謝你,當他們的私人數據與所有其他約翰史密斯混合在一起時。如果Miles O'Brien註冊,你的項目也會爆炸。所以,-1給你。 – 2012-04-15 04:38:12

+0

哦,夥計。沒有想過可憐的英里! – aaaidan 2012-04-16 06:37:14