我有一个数据库和一个表(innoDB):表。
此表中的行是:m1 和 m2。
我在一页上有 2 个提交按钮。
提交 1 执行此操作:
Database::q('UPDATE table SET m1 = ?s, m2 = ?i WHERE id = ?i', $n, 0, $ID);
提交 2 这样做:
Database::q('UPDATE table SET m2 = ?s WHERE id = ?i', $n2, $ID);
问题:如果用户同时提交两个表单。假设提交 1 为 100 000 ($n),提交 2 为 50 ($n2)。结果将在更新后:m1 为 99 950,m2 为 100 000。
我怎样才能防止这种情况?我尝试使用事务,但它仍然无法正常工作。
这个语法正确吗?我不明白什么时候使用哪个:执行,查询,执行?
try {
Database::beginTransaction();
Database::q('..');
Database::commit();
} catch (Exception $e) {
Database::rollBack();
echo 'ERROR!';
}
这是我正在使用的数据库类:http: //pastebin.com/PfsiYysX