我正在处理注册用户表单,我在mysql中有两个表。我想要做的是当新用户注册时,获取该用户的id(主键)并将其插入另一个表。最好的方法是什么?
提前致谢。
答案 0 :(得分:2)
为此需要使用mysql_insert_id。这是一个例子:
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');
mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", mysql_insert_id());
?>
答案 1 :(得分:2)
首先将用户详细信息插入到users表中,然后使用mysql_insert_id
获取插入的用户ID。并使用该用户ID插入另一个表。
答案 2 :(得分:1)
正在使用PHP
获取最后一个插入ID [{3}}
但如果您打算使用MYSQL QUERY
使用存储过程将最后一个插入ID存储到变量中,然后生成第二个查询
INSERT INTO T1 (col1,col2) VALUES (val1,val2);
SET @last_id_in_T1 = LAST_INSERT_ID();
INSERT INTO T2 (col1,col2) VALUES (@last_id_in_T1,val2);
或在第一次插入后直接插入
INSERT INTO T1 (col1,col2) VALUES (val1,val2);
INSERT INTO T2 (col1,col2) VALUES (LAST_INSERT_ID(),val2);
答案 3 :(得分:0)
使用任何交易查询进行写作:
以下是CI模式:
$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('AN SQL QUERY...');
if(!$this->db->trans_complete()){
$this->db->trans_rollback();
}
答案 4 :(得分:0)
$query1= "INSERT INTO employee ( username, email,...)
VALUES ('".$_POST["username"]."', ...)";
if($result1 = mysql_query($query1))
{
$emp_id = mysql_insert_id(); // last created id by above query
$query2= "INSERT INTO dept ( emp_id, dept_name, ...)
VALUES ('".$emp_id."', '".$_POST["dept_name"]."',...)";
if($result2 = mysql_query($query2))
{
//success msg
}
}
答案 5 :(得分:0)
在数据库级别执行此操作的另一种巧妙方法是使用Stored Procedure
请查看此solution以查看如何执行此操作的示例。您必须检查存储过程如何在特定数据库中工作以获取特定语法。这使得即使有人重构或移动代码并且效率更高,它也没有错误。
答案 6 :(得分:0)
在数据库级使用触发Mysql。例如,我有两个表:
user(id int primary key, nombre varchar(50));
replication(id_r int primary key, nombre_r varchar(50));
使用触发器:
create trigger user_r after insert on user
for each row
insert into replication(id_r, nombre_r)
select u.id, u.nombre
from user u
where u.id=NEW.id and u.nombre=NEW.nombre;