Php 根据选择更新表,可能使用锁定?

Php 根据选择更新表,可能使用锁定?,php,mysql,sql,transactions,locking,Php,Mysql,Sql,Transactions,Locking,我正在使用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

我正在使用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表并解锁它


有什么更好的方法可以做到这一点呢?

我想您可能需要一个选择。。更新内容:

如果您使用的是InnoDB表: