2011-02-16 148 views
1

我試圖將信息插入到數據庫中多個表多個表,我設法得到它使用這個工作:MYSQL,PHP插入到數據庫

$query = "INSERT INTO users (grp, email, college_id, tutor, year, password, register_date) VALUES ('$g', '$e', '$ci', '$tu', '$y', PASSWORD('$p'), NOW())"; 
    $query2 = "INSERT INTO unit_26 (college_id) VALUES ('$ci')"; 
    $result = mysql_query ($query); // Run the Query Now woooo. 
    $result2 = mysql_query ($query2); // Run the Query Now woooo. 
    if ($result) { // If it Ran OK. 

雖然它的工作原理和信息被添加到兩個表中,我只是想知道是否有人有更好的方式來做到這一點,或者這種方式是錯誤的?

謝謝

+0

此刻它有什麼問題? – 2011-02-16 20:15:18

回答

1

由於這兩個刀片是獨立地執行,同時運行其他程序可能會看到數據庫的狀態下第一次插入完成,但第二次插入不完成。

這是否是問題取決於應用程序邏輯。在你的情況下,很難說沒有額外的信息。可能不會。涉及兩個賬戶的金融交易就是一個例子,其中這個的一個問題:您不希望所有賬戶餘額的總和在任何時候都是錯誤的。

如果您認爲您需要此操作,則可以使性能以犧牲性能爲代價:另一個程序將在第一次插入之前或在第二次插入之後看到數據庫。它的工作原理是這樣的:

$result = FALSE; 
if (mysql_query('BEGIN')) { 
    if (mysql_query($query1) && 
     mysql_query($query2)) 
     $result = mysql_query('COMMIT'); // both queries looked OK, save 
    else 
     mysql_query('ROLLBACK'); // problems with queries, no changes 
} 

存儲引擎必須支持的交易,即它必須是InnoDB。否則這將默默無聞。

0

SQL插入僅適用於單個表。使用單個INSERT查詢不能將數據同時插入兩個或多個表中。您可以使用事務強制單獨插入爲原子,但仍然必須爲每個表執行INSERT。

可能是好的,如果你能這麼像

INSERT INTO t1.id, t2.val, t3.other VALUES ($t1id, $t2val, $t3other); 

但很可惜......