我正在帮助一位朋友使用基于网络的表格,这是为了他们的业务.我正准备让它准备好处理多个用户.我已经设置好了,因此在显示记录进行编辑之前,我使用以下代码锁定记录.
$query = "START TRANSACTION;";
mysql_query($query);
$query = "SELECT field FROM table WHERE ID = \"$value\" FOR UPDATE;";
mysql_query($query);
Run Code Online (Sandbox Code Playgroud)
(好吧,这是大大简化,但这是mysql的本质)
它似乎没有工作.但是,当我从命令行直接转到mysql时,使用相同的用户登录并执行
START TRANSACTION;
SELECT field FROM table WHERE ID = "40" FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)
我可以有效地阻止Web表单访问记录"40"并获得超时警告.
我尝试过使用BEGIN而不是START TRANSACTION.我已经尝试先执行SET AUTOCOMMIT = 0并在锁定后启动事务,但我似乎无法从PHP代码中锁定行.由于我可以从命令行锁定行,因此我认为数据库的设置方式不存在问题.我真的希望在阅读中我有一些简单的东西.
仅供参考,我正在开发XAMPP 1.7.3版本,其中包含Apache 2.2.14,MySQL 5.1.41和PHP 5.3.1.
提前致谢.这是我第一次发帖,但我过去从这个网站收集了很多知识.