2012-07-26 68 views
0

我正在构建一个工作中的Web应用程序,并且我有一个表单,用户可以在其中注册某些类型的信息。在提交时将PHP/MySQL插入到多个数据表中

Username | Password | Company 

现在我不知道该如何处理这个。我想要的是,当用户提交注册表单时,用户名,密码和公司被写入一个数据表(用户),但因为公司在用户数据表中是外键引用,我需要将公司写入单独的数据表(公司)作为主键(当然,用户名可以写成FK参考,因为它是1 - 1关系)。

我不是在寻找你们的编码解决方案,因为我知道我的PHP和MYSQL,我只是在寻找一些伪代码算法来获得创意果汁!

编辑:我使用PostgreSQL不是MySQL,但我敢肯定有不同的端口号相差不大,小的语法变化

+0

MySQL和Postgres之间有很大的区别。对于后者,您可以通过数据修改CTE一步解决此问题 - 如[后续问题](http://stackoverflow.com/q/12095553/939860)中所示。 – 2012-08-23 22:41:01

回答

1

假设第一列是id

  1. 保存公司$mysqli->query("INSERT INTO company VALUES (NULL, '$company_name')";
  2. 获得这个项目的ID。 $company_id = $mysqli->insert_id;
  3. 保存用户与此ID $mysqli->query("INSERT INTO user VALUES (NULL, '$username', '$password', '$company_id')";
  4. 获取用户的id $user_id = $mysqli->insert_id;
  5. 更新公司与它:$mysqli->query("UPDATE company SET user_id = $user_id WHERE company_id = $company_id)";
+0

对不起,一家公司只有一名用户,因为该用户是该公司员工提供有关其公司的信息。无论细节是1..1关系的两种方式。 – WebDevDanno 2012-07-26 15:01:32

+0

什么是PostGreSQL语法? $ mysqli是理论数据库上的句柄吗? – WebDevDanno 2012-07-26 15:04:46

+0

无论如何,我的解决方案将工作。但如果您还需要在'company'表中保存'user_id',您需要获取在步骤3中创建的用户标识,并使用此标识更新'company'表 – 2012-07-26 15:05:00

0

一些问题:

  • 为什么用户:公司== 1 :1?如果我和同事加入您的网站,我们是否需要假装在不同的地方工作?
  • 如果公司可以有多个员工,您将使用什么样的验证来结合公司名称的变体(例如,IBM和国际商业机器)?
  • 如果用户失业,该怎么办?

如果公司是一个很好的方知数据,而不是需要有或事物断数据,我可能会先注册我的用户。然后,当用户登录时,您可以唠叨他们获取更多信息。这具有使用户注册对用户不那么繁重的附加优点。

用例:

  • 用户提交usernamepassword
  • FILTRE输入坏的东西和验证复制,适合
  • 保存到数据库和检索用户PK
  • 负荷“附加信息'页面并将会话变量设置为“nag”标志 -if用户选择不填写add'l信息,nag标志可以触发提醒行为
  • 添加自动完成对公司字段,以便用户可以使用现有的公司表项
  • 过程的形式保存到数据库
    • 要么添加公司和准用户
    • 或只是关联用户
  • 没有设置会议老马国旗让你的网站不会继续唠叨
+0

我不能透露太多关于我作为其政府项目工作的项目,但在我得到1..1关系的情况下工作。 – WebDevDanno 2012-07-26 15:42:58

+0

@DanielD够公平的。我问了这些问题,因为我有过很多次“诚实,只会有一次”的对话。通常几个月后,有人会说“我怎么不能...”。我发现设计数据库通常更好,并且在PHP中实现1:1业务规则。 – dnagirl 2012-07-26 15:52:14

+0

是的,这是可以理解的,我完全同意只是希望我能解释。 – WebDevDanno 2012-07-27 10:21:15

相关问题