Tôi đang giúp một người bạn có biểu mẫu dựa trên web dành cho doanh nghiệp của họ. Tôi đang cố gắng làm cho nó sẵn sàng để xử lý nhiều người dùng. Tôi đã thiết lập nó để ngay trước khi bản ghi được hiển thị để chỉnh sửa Tôi đang khóa bản ghi với mã sau đây.khóa hàng mysql qua php
$query = "START TRANSACTION;";
mysql_query($query);
$query = "SELECT field FROM table WHERE ID = \"$value\" FOR UPDATE;";
mysql_query($query);
(ổn mà là rất đơn giản nhưng đó là bản chất của mysql)
Nó không có vẻ hoạt. Tuy nhiên, khi tôi đi trực tiếp vào mysql từ dòng lệnh, đăng nhập với cùng một người dùng và thực hiện
START TRANSACTION;
SELECT field FROM table WHERE ID = "40" FOR UPDATE;
tôi hiệu quả có thể ngăn chặn các hình thức web truy cập kỷ lục "40" và nhận được cảnh báo thời gian chờ.
Tôi đã thử sử dụng BEGIN thay vì BẮT ĐẦU GIAO DỊCH. Tôi đã thử làm SET AUTOCOMMIT = 0 đầu tiên và bắt đầu giao dịch sau khi khóa nhưng tôi dường như không thể khóa hàng từ mã PHP. Kể từ khi tôi có thể khóa hàng từ dòng lệnh tôi không nghĩ rằng có một vấn đề với cách cơ sở dữ liệu được thiết lập. Tôi thực sự hy vọng rằng có một số điều đơn giản mà tôi đã bỏ lỡ trong bài đọc của mình.
FYI, tôi đang phát triển trên phiên bản XAMPP 1.7.3 có Apache 2.2.14, MySQL 5.1.41 và PHP 5.3.1.
Xin cảm ơn trước. Đây là lần đầu tiên tôi đăng bài nhưng tôi đã thu thập rất nhiều kiến thức từ trang web này trong quá khứ.
Bạn đã làm gì sau lần thứ hai mysql_query ($ query); ?nếu thoát tập lệnh php của bạn, sau đó khóa phát hành – PasteBT