Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用剩余表的自动增量值插入多个表_Mysql_Database - Fatal编程技术网

Mysql 如何使用剩余表的自动增量值插入多个表

Mysql 如何使用剩余表的自动增量值插入多个表,mysql,database,Mysql,Database,例如,我有一个包含两个表的数据库。第一个表(表1)包括: userId是我的主键,它是自动递增的。我的下一张表(表2)有: userId(来自表2)是引用表1(userId)的外键。是否有一种方法可以插入到两个表的所有信息中,并让表2中的用户ID自动从表1中获取它引用的主键?或者我必须对每个表进行多次插入,并显式地使外键的值相同 您可以使用mysql的“Last\u insert\u id”,如下所示- <?php $user_query="INSERT INTO accounts (us

例如,我有一个包含两个表的数据库。第一个表(表1)包括:

userId是我的主键,它是自动递增的。我的下一张表(表2)有:

userId(来自表2)是引用表1(userId)的外键。是否有一种方法可以插入到两个表的所有信息中,并让表2中的用户ID自动从表1中获取它引用的主键?或者我必须对每个表进行多次插入,并显式地使外键的值相同

您可以使用mysql的“Last\u insert\u id”,如下所示-

<?php
$user_query="INSERT INTO accounts (userId,userEmail,userPassword) VALUES (NULL,'saving@gmail.com','XXXXXXXXX')";
$profile_query="INSERT INTO transactions(userProfileId,userAge,userGender,userId) VALUES (NULL,25,'m'LAST_INSERT_ID)";

$a_query=mysql_query($user_query);
$t_query=mysql_query($profile_query);
?>

好的,非常感谢。但是,如果我有多个线程从数据库中写入和提取数据,如果我同时写入了两次数据,我如何避免获取不正确的外键?您可以锁定表,而不是。我知道这很旧,但为了便于任何人阅读,如果您使用mysqli,不锁定表的更简单方法是:$db->query(“将值(NULL,'saving@gmail.com“,”XXXXXXXXX“)”;$db->查询(“插入到事务中(userProfileId、userAge、userGender、userId)值(NULL、25、'm'、”(int)$db->INSERT_id.);如果我没有错的话,您希望同时插入两个表,对吗?为此,您可以创建一个过程。请查看此
 userProfileId int not null auto_increment primary key
 userAge
 userGender
 userId 
<?php
$user_query="INSERT INTO accounts (userId,userEmail,userPassword) VALUES (NULL,'saving@gmail.com','XXXXXXXXX')";
$profile_query="INSERT INTO transactions(userProfileId,userAge,userGender,userId) VALUES (NULL,25,'m'LAST_INSERT_ID)";

$a_query=mysql_query($user_query);
$t_query=mysql_query($profile_query);
?>