我正在幫助一個朋友與他們的業務基於Web的形式。我正試圖讓它準備好處理多個用戶。我已經設置它,以便在顯示記錄之前進行編輯,我用下面的代碼鎖定記錄。通過php mysql的行鎖定
$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。
在此先感謝。這是我第一次發帖,但過去我從這個網站蒐集了大量的知識。
你在第二個mysql_query($ query)後做了什麼; ?如果你的php腳本退出了,那麼鎖定版本 – PasteBT 2012-03-21 23:18:55