Sto aiutando un amico con un modulo basato sul web che è per il loro business. Sto cercando di renderlo pronto per gestire più utenti. L'ho impostato in modo che appena prima che il record venga visualizzato per la modifica, sto bloccando il record con il seguente codice.mysql row locking via php
$query = "START TRANSACTION;";
mysql_query($query);
$query = "SELECT field FROM table WHERE ID = \"$value\" FOR UPDATE;";
mysql_query($query);
(va bene che è notevolmente semplificata, ma che è l'essenza del mysql)
Non sembra funzionare. Tuttavia, quando vado direttamente a MySQL da linea di comando, entrando con lo stesso utente ed eseguire
START TRANSACTION;
SELECT field FROM table WHERE ID = "40" FOR UPDATE;
posso bloccare in modo efficace il modulo web di accedere ai record "40" e ottenere l'avviso di timeout.
Ho provato a utilizzare BEGIN anziché START TRANSACTION. Ho provato a fare SET AUTOCOMMIT = 0 prima e avviare la transazione dopo il blocco, ma non riesco a bloccare la riga dal codice PHP. Dal momento che posso bloccare la riga dalla riga di comando, non penso che ci sia un problema con il modo in cui il database è impostato. Spero davvero che ci sia qualcosa di semplice che mi è sfuggito nella mia lettura.
FYI, Sto sviluppando su XAMPP versione 1.7.3 che ha Apache 2.2.14, MySQL 5.1.41 e PHP 5.3.1.
Grazie in anticipo. Questa è la mia prima pubblicazione, ma in passato ho raccolto molte informazioni su questo sito.
Cosa hai fatto dopo la seconda mysql_query ($ query); ?se il tuo script php termina, quindi apri il blocco – PasteBT