3

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

提前致谢。

4

7 回答 7

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());
?>
于 2013-09-25T06:29:25.650 回答
2

首先将用户详细信息插入用户表并使用mysql_insert_id. 并使用该用户 ID 插入另一个表。

于 2013-09-25T06:30:16.543 回答
1

在 PHP 上获取它

在此处获取最后插入 ID

但是,如果您打算使用 MYSQL 查询来获取它

使用存储过程将最后一个插入 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);
于 2013-09-25T06:38:35.767 回答
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;
于 2013-09-25T06:58:09.373 回答
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();
}
于 2013-09-25T06:30:07.230 回答
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
            }
        }
于 2013-09-25T06:32:09.747 回答
0

在数据库级别本身执行此操作的另一种巧妙方法是使用存储过程

查看此解决方案以查看如何执行此操作的示例。您必须检查存储过程在特定数据库中的工作方式以获取特定语法。这使得即使有人重构或移动代码也不会出错并且效率更高。

于 2013-09-25T06:34:01.700 回答