在提交更改之前,我需要知道事务中更改了哪些值。是否可以获取原始值(而不是未限制的值?)。例如(虚构代码):
try {
$pdo->beginTransaction();
$pdo->exec('UPDATE items SET name = :name, text = :text WHERE id = :id', $newData);
//If the update was fine:
$oldData = $pdo->query('SELECT * FROM items WHERE id = :id LIMIT 1', array(':id' => $newData['id']);
$diff = array_diff_assoc($newData, $oldData);
echo 'Item was update successfully with new values in '.implode(', ', array_keys($diff));
$pdo->commit();
} catch (Exception $E) {
echo 'something is wrown';
$pdo->rollBack();
}
在事务中选择数据时,此数据是更改后的数据,而不是原始数据。mysql中是否有跳过此操作的选项?
在事务内部,一切都像在发送q查询时所做的更改一样工作。你唯一的办法是:
- 启动事务
- 选择您需要的值
- 将它们保存在PHP变量中
- 做好你的工作
- 再次选择
- 比较
- 承诺与否
如果您只需要测试更新是否成功,那么简单地捕捉错误就足够了。