【发布时间】:2011-07-22 03:20:40
【问题描述】:
所以基本上我要做的是当我的网站用户在我们的注册页面上创建一个新帐户时,我想要用户表(基本信息表、电子邮件、密码等)插入到个人资料表的新行中(更多描述性信息,关于我,显示名称等)
我想在 PHP 中执行此操作,我们将不胜感激。
【问题讨论】:
标签: php mysql insert automation foreign-keys
所以基本上我要做的是当我的网站用户在我们的注册页面上创建一个新帐户时,我想要用户表(基本信息表、电子邮件、密码等)插入到个人资料表的新行中(更多描述性信息,关于我,显示名称等)
我想在 PHP 中执行此操作,我们将不胜感激。
【问题讨论】:
标签: php mysql insert automation foreign-keys
如果您使用的是 mysqli,请查看: http://www.php.net/manual/en/mysqli.insert-id.php
在第一次插入后获取 id,然后在下一次插入中使用它。
【讨论】:
如果真的不需要“在 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
【讨论】:
我认为 MySQL 中没有真正优雅的方式,主要是因为 INSERT 不返回任何内容。 PostgreSQL 确实允许 INSERT ... RETURNING 子句,但这是一个扩展。
也就是说,如果您在 PHP 中使用 mysql_* 函数,则可以使用 mysql_insert_id,这可能足以满足您的需求(即,如果您的主键是 AUTO INCREMENT 整数)。
【讨论】:
如果您使用的是 mysql 数据库,您也可以使用以下查询从 php 执行另一个查询调用:
"SELECT LAST_INSERT_ID();"
更多信息在这里:http://www.jpgtutorials.com/mysql-last_insert_id-function
它是特定于连接的。来自不同连接的并发插入不会影响当前连接。
【讨论】: