Sandra: count Datensatz um eines erhöhen, mysql

Im Augenblick mache ich das so:

$sql =  "select count from tabelle WHERE id=1";  
$result = mysql_query($sql) or die ($sql.'<br>'.mysql_error());  
$zaehler= mysql_fetch_object($result);  
$count=$zaehler->count+1;  
mysql_query("UPDATE tabelle SET count='$count' WHERE id=1");

In meiner Tabelle wird im Datensatz Nr. 1 das Feld Count um einen Zähler erhöht.

Jetzt meine FRage, kann man das nicht einfach und komapakter machen, vieleicht mit nur einer Befehlskette in MYSQL?

Sandra

  1. Guten Morgen,

    [...]

    $sql =  "select count from tabelle WHERE id=1";

    $result = mysql_query($sql) or die ($sql.'<br>'.mysql_error());
    $zaehler= mysql_fetch_object($result);
    $count=$zaehler->count+1;
    mysql_query("UPDATE tabelle SET count='$count' WHERE id=1");

    
    > [...]  
    > Jetzt meine FRage, kann man das nicht einfach und komapakter machen, vieleicht mit nur einer Befehlskette in MYSQL?  
      
    Du kannst es mit folgendem Statement vereinfachen:  
    UPDATE tabelle SET count = count + 1 WHERE id=1  
      
    Schöne Grüße,  
      
    Peter
    
  2. Mahlzeit Sandra,

    Im Augenblick mache ich das so:

    Aha - von hinten durch die Brust ins Auge also ... ;-)

    $count=$zaehler->count+1;
    mysql_query("UPDATE tabelle SET count='$count' WHERE id=1");[/code]

    Das Feld "count" ist also ein numerischer Wert? Warum setzt Du dann den Wert in Anführungszeichen (die normalerweise zum Einpferchen von Stringliteralen dienen)?

    Jetzt meine FRage, kann man das nicht einfach und komapakter machen, vieleicht mit nur einer Befehlskette in MYSQL?

    Natürlich:

    UPDATE tabelle  
       SET count = count + 1  
     WHERE id = 1
    

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Hi!

    $sql =  "select count from tabelle WHERE id=1";

    mysql_query("UPDATE tabelle SET count='$count' WHERE id=1");

    
    > Jetzt meine FRage, kann man das nicht einfach und komapakter machen, vieleicht mit nur einer Befehlskette in MYSQL?  
      
    Nicht nur "kann" sondern sogar "muss", denn in der jetzigen Form hast du ein Nebenläufigkeitsproblem.  
      
    Ein Prozess kommt an das Select, stellt beispielsweise eine 5 fest, denkt kurz nach, und stellt fest, dass er nun da eine 6 reinschreiben muss. In dieser Zeit kommt ein zweiter Prozess und bekommt über das Select auch eine 5, denkt kurz nach, und stellt fest, dass er eine 6 reinschreiben muss. In dieser Zeit hat der erste Prozess ausgedacht und schreibt seine 6 rein. Der zweite ist nun ebenfalls fertig und schreibt auch seine 6 rein.  
      
    Das "UPDATE SET feld = feld + 1" ist hingegen ein atomarer Prozess. Das DBMS lässt sich bei dessen Ausführen nicht von anderen Anfragen stören, die müssen sich hinten anstellen.  
      
      
    Lo!
    
  4. Danke für die Hilfe,

    Sandra

    warum eine grosse Steinbrücke bauen, wenn der Bach nur 20 cm Breit ist