【发布时间】:2014-06-24 09:28:54
【问题描述】:
我正在使用 php 并尝试使用 mysql 选择以下内容:
$state_id = $sql->query('select state_id from table1 where id='.$sql->escape_string($_REQUEST['id']));
if ($state_id == $_REQUEST['state_id']) {
$res = $sql->query('update table1 set state_id=state_id+1, state="'.$sql->escape_string($_REQUEST['state']).'" where id='.$sql->escape_string($_REQUEST['id']));
echo 1; // Passes
} else {
echo 0; // Fails
}
我希望仅当 state_id 等于 $_REQUEST['state_id'] 时才进行更新,但我还希望将此条件的结果返回给客户端,所有这些都在一个原子操作中完成。我的想法是也许我可以在回显 0 或 1 之前锁定 table1 表并解锁它。
有什么更好的方法来做到这一点?
【问题讨论】:
标签: php mysql sql transactions locking