Mailinglisten-Archive |
Armin Steiner wrote: Ich wuerde sagen, das du die Tabelle auch beim select einen write-lock spendieren musst. Zu dem Zeitpunkt waere es naemlich moeglich, das ein anderer direkt nach dem select einen insert fahert.... deine Transaktion umfasst folgendes: 1. lock write 2. select 3. evtl insert 4. unlock du machst locks um jeden sql-query, das bringt wohl nix... --Andi > > Ok, erstmal danke für eure Tips, > > aber fragen bleiben trotzdem: > Ich versuche nun, die Datenbank beim Vorgang mittels LOCK > vor gleichzeitigen Einträgen zu schützen (Weil, wir erinnern uns, > wenn der gleichzeitige Zugriff nicht verhindert wird, sind > doppelte Einträge möglich, und das kann die Datenbank dann > in tiefe Sinnkrisen stürzen :-)). Das sieht dann so bei mir aus: > > Daten für die Überprüfungsroutine zu holen: > -------------- cut --------------------------------- > $lock = "LOCK TABLES user READ offer READ"; > $unlock = "UNLOCK TABLES"; > $sql = "SELECT name,vorname,email,login FROM user"; > > db = _(at)_mysql_connect($host, $user) OR DIE("There appeared an error(1), > please try again."); > _(at)_mysql_select_db($database,$db) OR DIE ("There appeared an error(2), > please try again."); > $getlock = mysql_query($lock,$db); > $result = mysql_query($sql,$db); > $getunlock = mysql_query($unlock,$db); > ---------------------------------------------------- > > bzw. > > Für den Fall, dass Überprüfung erfolgreich war: Eintrag: > -------------- cut --------------------------------- > $lock = "LOCK TABLES user WRITE offer READ"; > $unlock = "UNLOCK TABLES"; > $sql = INSERT INTO user VALUES > ('$name','$vorname','$strasse','$strnr','$ort','$plz','$telnrvor','$teln > rnach','$faxnrvor' > ,'$faxnrnach','$email','$passwd','$land','$login','$anrede','$bbue')"; > > db = _(at)_mysql_connect($host, $user) OR DIE("There appeared an error(1), > please try again."); > _(at)_mysql_select_db($database,$db) OR DIE ("There appeared an error(2), > please try again."); > $getlock = mysql_query($lock,$db); > $result = mysql_query($sql,$db); > $getunlock = mysql_query($unlock,$db); > ---------------------------------------------------- > > schade nur, das es nicht funktioniert. Doppelte Einträge sind immer > noch möglich .... grmble. > > Wo liegt der Fehler ? Oder wird der LOCK auf Windows nicht > unterstützt ? > > Was geben $getlock und $getunlock eigentlich zurück ? (bzw. > was sollten sie bei Erfolg/Misserfolg zurückgeben?). Ich habe das > mal mit "echo $getlock" und "echo $getunlock" geprüft, $getlock gab > nichts zurück, $getunlock gab 1 zurück ? Könnte mir das helfen ? > > Hoffe war nicht zu lang das posting ... :-) > > mit bestem Gruß > > -Armin > _____________________________________________________________ > Du bist PHP-Einsteiger ? Installationsguides, BestofGML, Tipps, Links > MySQL-Tutorial, WhoIsWho, Spotlight *NEU* dt. Manual *NEU* --- > DyNAMIc WEb PAGes at http://www.dynamic-webpages.de > > --- > *** Abmelden von dieser Mailingliste funktioniert per E-Mail > *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe -- Andreas Vierengel System and Network Professional / Consultant GEDIF GmbH --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive