2011-06-28 41 views
1

我想能夠插入到兩個不同的MySQL表使用PHP與第二個MySQL插入依賴於第一個插入的成員ID。想要做一個雙重的MYSQL INSERT INTO到兩個不同的表

例如:

mysql_query(" 
    INSERT INTO `member_users` (
     `id`, 
     `first_name`, 
     `last_name`, 
     `username`, 
     `password`, 
     `address1`, 
     `address2`, 
     `postcode`, 
     `access`, 
     `expires` 
    ) VALUES (
     NULL, 
     '$fname', 
     '$lname', 
     '$email', 
     '$passhash', 
     '$add1', 
     '$city', 
     '$postcode', 
     '', 
     '' 
    )" 
); 

然後我想借此會員用戶的ID來創建在同一頁面如的mysql_query插入:

mysql_query(" 
    INSERT INTO `member_orders` (
     `order_id`, 
     `member_id`, 
     `date`, 
     `item`, 
     `size`, 
     `quantity`, 
     `price`, 
     `tracking_id`, 
     `status`, 
     `item_sent`, 
     `notes` 
    ) VALUES (
     NULL, 
     '$userid', 
     '', 
     '', 
     '', 
     '', 
     '', 
     '', 
     '', 
     '', 
     '' 
    ) 
"); 

它可能是一個非常簡單的答案,一個非常愚蠢的問題,但似乎無法找到答案的任何地方

在此先感謝

回答

0

您可以使用php函數mysql_insert_id()獲取您輸入數據庫的最後一個ID。

EG:

$sql = "INSERT INTO `table` VALUES (NULL, 'Thomas', 'Male')"; 
$query = mysql_query($sql); 
$id = mysql_insert_id(); 

所以你的問題第一INSERT後,你需要這樣的:

$userid = mysql_insert_id(); 

然後你的第二個查詢將正常工作。

+0

非常感謝你!!!!! – meohmy

0

您可以使用mysql_insert_id()獲取由最後一次插入生成的id。

mysql_insert_id — Get the ID generated from the previous INSERT operation 
0

你可以做這樣的事情是什麼在這個例子做

$sql = "INSERT INTO users(name,gender) VALUES ('$name','$gender')"; 
$result = mysql_query($sql,$conn); 
$user_id = mysql_insert_id($conn); 
$sql = "INSERT INTO website(site,user) VALUES ('$site',$user_id)"; 
$result = mysql_query($sql,$conn); 

手冊mysql_insert_id

1

如果我理解正確的,你需要從第一個查詢得到member_id,要在第二個查詢中使用,可以使用PHP功能

$the_member_id = mysql_insert_id(); 

http://php.net/manual/en/function.mysql-insert-id.php

你也可以不用使用PHP函數

$sql = "SELECT LAST_INSERT_ID()"; 
// add code here to run the query. 
0

您可以使用MySQL的LAST_INSERT_ID功能您的第二個SQL語句來從第一的最後一個插入ID。

mysql_query(" 
    INSERT INTO `member_orders` (
     `order_id`, 
     `member_id`, 
     `date`, 
     `item`, 
     `size`, 
     `quantity`, 
     `price`, 
     `tracking_id`, 
     `status`, 
     `item_sent`, 
     `notes` 
    ) VALUES (
     NULL, 
     LAST_INSERT_ID(), 
     '', 
     '', 
     '', 
     '', 
     '', 
     '', 
     '', 
     '', 
     '' 
    ) 
"); 

我會建議,如果你使用這種方法,那麼你在一個事務中執行查詢。這樣就不可能在第一次插入和第二次插入之間發生另一次插入,從而拋出LAST_INSERT_ID的結果。

0

執行mysql_query()函數後,您可以通過mysql_insert_id()獲取最後插入的表的最後一個id。