блокировка строк mysql через php

Я помогаю другу с веб-формой, предназначенной для его бизнеса. Я пытаюсь подготовить его для обработки нескольких пользователей. Я настроил его так, что непосредственно перед отображением записи для редактирования я блокирую запись с помощью следующего кода.

$query = "START TRANSACTION;";
mysql_query($query);
$query = "SELECT field FROM table WHERE ID = \"$value\" FOR UPDATE;";
mysql_query($query);

(хорошо, это сильно упрощено, но в этом суть mysql)

Похоже, что это не работает. Однако, когда я перехожу непосредственно к mysql из командной строки, вхожу в систему с тем же пользователем и выполняю

START TRANSACTION;
SELECT field FROM table WHERE ID = "40" FOR UPDATE;

, я могу эффективно заблокировать веб-форму от доступа к записи «40» и получить предупреждение о тайм-ауте.

Я попытался использовать BEGIN вместо START TRANSACTION. Я попытался сначала выполнить SET AUTOCOMMIT=0 и запустить транзакцию после блокировки, но я не могу заблокировать строку из кода PHP. Поскольку я могу заблокировать строку из командной строки, я не думаю, что есть проблема с настройкой базы данных. Я действительно надеюсь, что есть что-то простое, что я пропустил в своем чтении.

К вашему сведению, я разрабатываю XAMPP версии 1.7.3 с Apache 2.2.14, MySQL 5.1.41 и PHP 5.3.1.

Заранее спасибо. Это моя первая публикация, но я почерпнул много информации с этого сайта в прошлом.

8
задан deezee 21 March 2012 в 23:11
поделиться