2016-08-02 108 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);