2016-08-02 84 views
-2

我有两个表。一个是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** 
+1

您不能插入与单个查询多个表。但是,如果您试图达到ACID合规性,则可以将多个查询合并到一个事务中。 – eggyal

+0

您无法使用一个查询 – DestinatioN

+0

将数据插入多个表中,您可以执行此操作。你必须分开查询; –

回答

1

如果你想有两个你不能让一个查询inserttwo tables

然而查询仅在一条语句中,然后 如果您单独使用;

$query = "insert into table_1 (data1, data2) values ('value1', 'value2');insert into table_2 (data1,data2) values ('value1', 'value2')"; 
+0

'user_id(p)'和'user_id(fk)'怎么样?它会自动插入吗? – jonju

+0

@jonju那些2有什么问题?以上查询仅是列和值的示例。 op必须根据需要编辑两个查询 –

+0

如果'user_id'为AUTO_INCREMENT,则此考试不起作用。 OP知道,最好让别人知道Do not Do, – jonju

0

最好的方法是使用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);