我需要做2个查询。
基本上是
mysql_query("INSERT INTO table ($value1,$value2)");
和
mysql_query("UPDATE table2 SET field1 = '$value1', field2 = '$value2'");
我想我可以简单地做一个
if (mysql_query("INSERT ...") !== false) {
mysql_query("UPDATE ...");
}
在这种情况下我应该使用交易吗?我该怎么用呢? 或者我可以保留这么简单吗?
由于
答案 0 :(得分:2)
如果您想要一些“全有或全无”的行为,通常会使用交易。
基本上,对于交易,您可以:
如果使用mysql_*
功能,则必须:
START TRANSACTION
查询COMMIT
或ROLLBACK
查询。要检测查询是否成功,您确实可以检查mysql_query()
的返回值:如果出现错误,它将返回false
。
注意:MySQL是旧的扩展 - 并且没有处理事务的功能;这意味着你必须将它们作为常规查询处理。
使用MySQLi,您可以使用:
答案 1 :(得分:1)
对于插入和更新,MySQL有一个很好的替代解决方案 - “ON DUPLICATE KEY UPDATE”。它可以在一个查询中安全地执行您想要的操作:
INSERT .... ON DUPLICATE KEY UPDATE
(在这种情况下,密钥也必须设置为唯一)
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html