PHP / MySQL在提交时插入多个数据表

时间:2012-07-26 14:50:11

标签: php postgresql

我正在构建一个工作中的Web应用程序,我有一个表单,用户可以在其中注册某些类型的信息。

Username   |   Password   |   Company

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

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

编辑:我使用的是POSTGRESQL而不是MYSQL但是我很确定除了端口号和小的语法更改之外没有什么区别

3 个答案:

答案 0 :(得分: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. 保存用户
  5. 获取用户的身份$user_id = $mysqli->insert_id;
  6. 使用它更新公司:$mysqli->query("UPDATE company SET user_id = $user_id WHERE company_id = $company_id)";

答案 1 :(得分:0)

开始在你的表compagny中插入你的compagny。 取回身份证。 (有一个像LastInsertId这样的sql requete 在表用户中插入用户/密码/ IdCompagny。

编辑:一些帮助:http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

答案 2 :(得分:0)

有些问题:

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

如果公司是易于理解的数据,而不是 required-or-thing-break 数据,我可能会首先注册我的用户。然后,当用户登录时,您可以唠叨这些信息以获取更多信息。这具有使用户注册对用户来说不那么繁重的附加优点。

用例:

  • 用户提交usernamepassword
  • 过滤输入不良内容并验证重复,适用性
  • 保存到db并检索用户PK
  • 加载“其他信息”页面并将会话var设置为“nag”标志 - 如果用户选择不填写add'l信息,则nag标志可以触发提醒行为
  • 将自动填充添加到公司字段,以便用户可以使用现有的公司表条目
  • 处理表单并保存到db
    • 添加公司和关联用户
    • 或仅关联用户
  • 取消设置会话nag标志,以便您的网站不会继续唠叨