【问题标题】:PHP MySQL foreign-key auto insertPHP MySQL外键自动插入
【发布时间】:2011-07-22 03:20:40
【问题描述】:

所以基本上我要做的是当我的网站用户在我们的注册页面上创建一个新帐户时,我想要用户表(基本信息表、电子邮件、密码等)插入到个人资料表的新行中(更多描述性信息,关于我,显示名称等)

我想在 PHP 中执行此操作,我们将不胜感激。

【问题讨论】:

标签: php mysql insert automation foreign-keys


【解决方案1】:

如果您使用的是 mysqli,请查看: http://www.php.net/manual/en/mysqli.insert-id.php

在第一次插入后获取 id,然后在下一次插入中使用它。

【讨论】:

    【解决方案2】:

    如果真的不需要“在 php 中”执行此操作,那么您可以使用 MySQL 内置的 Trigger 机制来执行此更新。

    触发器导致某件事发生在事件之后或之前(插入、更新、删除)

    所以你的触发器是:

    CREATE TRIGGER thistrigger AFTER INSERT
    ON User FOR EACH ROW
    UPDATE PROFILE SET "whatever"
    

    在触发器上:http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

    【讨论】:

      【解决方案3】:

      我认为 MySQL 中没有真正优雅的方式,主要是因为 INSERT 不返回任何内容。 PostgreSQL 确实允许 INSERT ... RETURNING 子句,但这是一个扩展。

      也就是说,如果您在 PHP 中使用 mysql_* 函数,则可以使用 mysql_insert_id,这可能足以满足您的需求(即,如果您的主键是 AUTO INCREMENT 整数)。

      【讨论】:

        【解决方案4】:

        如果您使用的是 mysql 数据库,您也可以使用以下查询从 php 执行另一个查询调用:

        "SELECT LAST_INSERT_ID();"

        更多信息在这里:http://www.jpgtutorials.com/mysql-last_insert_id-function

        它是特定于连接的。来自不同连接的并发插入不会影响当前连接。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-29
          • 1970-01-01
          相关资源
          最近更新 更多