那麼,如果你有能力使用InnoDB表(而不是MyISAM),那麼你可以使用事務。下面是一些粗糙的代碼
<?php
// Start a transaction
mysql_query('begin');
// Execute the queries
if (mysql_query("insert into table_one (col1, col2) values('hello','world')"))
{
$pk1 = mysql_insert_id();
if (mysql_query("insert into table_two (col1, col2) values('foo', 'bar')"))
{
$pk2 = mysql_insert_id();
$success = mysql_query("insert into link_table (fk1, fk2) values($pk1, $pk2)");
}
}
// Complete the transaction
if ($success)
{
mysql_query('commit');
} else {
mysql_query('rollback');
}
如果您不能使用InnoDB表,那麼我建議尋找到Unit Of Work模式。
嘿,你回來了!我認爲在傑夫重構之後我們已經失去了你。很高興看到它。 – 2009-01-06 21:15:11
我的聲望已經調整過了,我不打算像我一樣過度活躍。我試圖趕上所有新的東西,在博客文章中回覆幾件事情。很高興見到你,保羅! – 2009-01-06 21:20:00