2010-11-29 17 views
0

Ich versuche, eine Ansicht Zähler für meine Website zu machen, aber aus irgendeinem Grund, wenn es zählt die erste Ansicht es nicht mehrview counter, nicht ganz funktioniert

hier geht nach oben ist der Code

$checkViews = "SELECT COUNT (counter) FROM pageViews WHERE chapterID = '".$_GET["chapterNo"]."'"; 
$result=getQuery($checkViews,$l); 
if($result == 0) 
{ 
$viewupdate = "INSERT INTO pageViews (chapterID, counter) VALUES ('".$_GET["chapterNo"]."', 1)"; 
$result=getQuery($viewupdate,$l); 
} 
else if ($result != 0) 
{ 
$viewUpdate = "UPDATE pageViews SET counter = counter++ WHERE chapterID = '".$_GET["chapterNo"]."'"; 
$result=getQuery($viewUpdate,$l); 
} 

Antwort

0

Es gibt keinen ++ Operator in MySQL, wie es in PHP oder C++ ist, so erhöht, dass der Zählerwert mit Zählern = Zähler + 1

Wenn Sie Ihren Code schlanker machen möchten, denken Sie an UPDATE ON DUPLICATE KEY. Diese Syntax wird einen neuen Wert ein, wenn der Schlüssel Sie einzigartige liefern ist, und Updates, wenn der Schlüssel bereits verwendet wird:

$viewupdate = "INSERT INTO pageViews (chapterID, counter) VALUES ('".$_GET["chapterNo"]."', 1) 
    ON DUPLICATE KEY UPDATE counter = counter + 1"; 

Dies fügt 1 als Zählerwert, wenn Sie einen neuen Zähler in die Datenbank sind Einfügen für ein Kapitel in der ersten Ansicht oder erhöht den Zähler um eins. Sie müssen keine Überprüfung oder zusätzliche Abfragen durchführen.

0

Ändern counter++ zu counter+1 in Ihrem UPDATE sql.

Auch Ihre Fragen scheinen offen für SQL-Injection zu sein ..

+0

versucht, dass, nicht in beide Richtungen funktioniert – dbomb101

+0

Sie haben es nicht richtig gemacht dann. :) Es sollte 'UPDATE pageViews SET counter = counter + 1' sein. Wenn das immer noch nicht funktioniert, haben Sie anderswo ein anderes Problem. – simshaun

Verwandte Themen