使用一个查询内连接插入到两个表中
问题描述:
我有两个表。一个是user_info
,另一个是user_login
。我想在一个查询中使用内部连接将数据插入到这两个表中。数据来自用户注册。使用一个查询内连接插入到两个表中
我的登录表:
user_id(pk) user_name user_password
1 jinesh secret
2 mahesh secret
我的信息表:
user_id(fk) name address phno
1 jinesh n banglore 9845***
2 mahesh m chennai 7345**
答
如果你想有两个你不能让一个查询insert
值two tables
然而查询仅在一条语句中,然后 如果您单独使用;
$query = "insert into table_1 (data1, data2) values ('value1', 'value2');insert into table_2 (data1,data2) values ('value1', 'value2')";
答
最好的方法是使用Stored Procedure
。
CREATE PROCEDURE `Proc_User` (IN username VARCHAR(225), IN password VARCHAR(255),
IN uname VARCHAR(255),IN addr VARCHAR(255),IN phno VARCHAR(20))
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
-- ERROR or WARNING
ROLLBACK;
END;
START TRANSACTION;
DECLARE userid INT;
INSERT INTO login (user_name,user_password) VALUES(username,password);
SET userid = (SELECT LAST_INSERT_ID());
INSERT INTO info(user_id,name,address,phno)
VALUES(userid,uname,addr,password);
COMMIT;
END
,并调用存储过程在PHP
$proc = mysqli_prepare('CALL Proc_User(?, ?, ?,?,?);');
mysqli_stmt_bind_param('sssss', $username, $password, $name,$address,$phoneno);
mysqli_stmt_execute($proc);
您不能插入与单个查询多个表。但是,如果您试图达到ACID合规性,则可以将多个查询合并到一个事务中。 – eggyal
您无法使用一个查询 – DestinatioN
将数据插入多个表中,您可以执行此操作。你必须分开查询; –