那么,如果你有能力使用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