2010-11-29 7 views
0

Je suis en train de faire un compteur de vue pour mon site, mais pour une raison étrange, une fois qu'il compte la première vue, il ne va pas plusCompteur, pas tout à fait travailler

voici le 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); 
} 

Répondre

0

Il n'y a pas opérateur ++ dans MySQL comme il est en PHP ou C++, si incrémente cette valeur de compteur avec compteur = compteur + 1.

Si vous souhaitez rationaliser votre code, pensez à UPDATE ON DUPLICATE KEY. Cette syntaxe insère une nouvelle valeur si la clé que vous fournissez est unique, et les mises à jour si la clé est déjà utilisée:

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

Ceci insère 1 la valeur du compteur si vous insérez un nouveau compteur dans la base de données pour un chapitre sur sa première vue, ou bien incrémente le compteur d'une unité. Vous n'avez pas à faire de vérification ou de requêtes supplémentaires.

0

Modifiez counter++ en counter+1 dans votre SQL UPDATE.

En outre, vos requêtes semblent ouverts à l'injection sql ..

+0

essayé, n'a pas fonctionné de toute façon – dbomb101

+0

Vous ne l'avez pas fait alors. :) Cela devrait être 'UPDATE pageViews SET counter = counter + 1'. Si cela ne fonctionne toujours pas, vous avez un autre problème ailleurs. – simshaun

Questions connexes