Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MySQL在提交时插入多个数据表_Php_Postgresql - Fatal编程技术网

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

PHP/MySQL在提交时插入多个数据表,php,postgresql,Php,Postgresql,我正在工作中构建一个web应用程序,我有一个表单,用户可以在其中注册某些类型的信息 Username | Password |公司 现在我不知道该怎么做。我想要的是,当用户提交注册表时,用户名、密码和公司被写入一个数据表(用户),但由于用户数据表中的公司是外键引用,我需要将公司作为主键写入一个单独的数据表(公司)(当然,用户名要作为FK引用写入,因为它是1-1关系) 我不是在寻找你们的编码解决方案,因为我知道我的PHP和MYSQL,我只是在寻找一些伪代码算法,以获得创造性的果汁流动 编辑:我使

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

Username | Password |公司
现在我不知道该怎么做。我想要的是,当用户提交注册表时,用户名、密码和公司被写入一个数据表(用户),但由于用户数据表中的公司是外键引用,我需要将公司作为主键写入一个单独的数据表(公司)(当然,用户名要作为FK引用写入,因为它是1-1关系)

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


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

开始在表compagny中插入compagny。 获取id。(有一个sql请求,如
LastInsertId
) 在用户表中插入user/password/IdCompagny


编辑:一些帮助:

假设第一列是
id

  • 保存公司
    $mysqli->query(“插入公司值(NULL,$Company_name”);
  • 获取此项目的id。
    $company\u id=$mysqli->insert\u id;
  • 使用此id保存用户
    $mysqli->query(“插入到用户值中(NULL,$username','$password','$company_id');
  • 获取用户id
    $user\u id=$mysqli->insert\u id;
  • 使用它更新公司:
    $mysqli->query(“更新公司设置用户\u id=$user\u id,其中公司\u id=$company\u id)”;
  • 一些问题:

    • 为什么User:Company==1:1?如果我和同事加入你的网站,我们需要假装在不同的地方工作吗
    • 如果公司可以有多个员工,您将采用什么样的验证来组合公司名称的变化(例如IBM与国际商业机器)
    • 如果用户失业怎么办
    如果公司是一个很好的了解数据,而不是一个必需的数据,或者是一些东西破坏了数据,我可能会先注册我的用户。然后,当用户登录时,你可以对他们唠叨更多的信息。这还有一个额外的好处,那就是用户注册不那么繁重

    用例:

    • 用户提交
      用户名
      密码
    • 过滤输入中的不良内容,并验证其重复性、适用性
    • 保存到数据库并检索用户PK
    • 加载“附加信息”页面并将会话变量设置为“nag”标志 -如果用户选择不填写添加信息,nag标志会触发提醒行为
    • 将自动完成添加到公司字段,以便用户可以使用现有的公司表条目
    • 处理表单并保存到数据库
      • 添加公司和关联用户
      • 或者只是关联用户
    • 取消设置会话唠叨标志,使您的网站不会继续唠叨

    很抱歉,一家公司只有一个用户,因为该用户是该公司提供公司信息的员工。不管细节如何,两者都是1..1关系。PostGreSQL语法是什么?$mysqli是理论数据库的句柄吗?无论如何,我的解决方案会起作用。但是如果您还需要保存
    用户_id
    公司
    表中,您需要获取在步骤3中创建的用户id,并使用此id更新
    公司
    表id@DanielD问题是关于mysql的。我想postgre也有类似的方法。$mysqli是mysql特有的-谢谢你,我今天做了一百万件事!什么都想不出来!我会接受你的答案作为正确答案d谢谢你的帮助。好的,那很酷。对不起,我应该提到我正在使用PostgreSql。我不能透露太多关于我作为政府项目工作的项目的信息,但在这种情况下,我有一个1..1的关系是有效的。@DanielD很公平。我问这些问题是因为我有一个“诚实的,永远只有一个”谈话太多了。通常几个月后,有人会说“我怎么不能……”。我发现设计数据库来考虑这一点通常更好,并在PHP中实现1:1业务规则。是的,这是完全可以理解的,我完全同意我的解释。MySQL和Postgres之间有很大的区别。使用后者,您可以通过修改数据CTE一步解决这个问题-如下面所示。