从一个表中插入id并将其插入另一个表中。 Mysql + PHP

时间:2013-09-25 06:26:07

标签: php mysql

我正在处理注册用户表单,我在mysql中有两个表。我想要做的是当新用户注册时,获取该用户的id(主键)并将其插入另一个表。最好的方法是什么?

提前致谢。

7 个答案:

答案 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;