2012-04-15 114 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