[英]Counter does not increment in PHP/MySQL
我需要為成員部分創建一個計數器(計算用戶登錄的次數)。
我有以下腳本(counter.php):
<?php
$conn = mysql_connect("localhost", "myuser", "mypass");
mysql_select_db("test");
$sql = "SELECT views FROM members WHERE mid = " . $_GET['mid'];
$result = mysql_query($sql);
if (!$result)
{
mail(ADMIN, 'Cannot Get: ' . mysql_error(), mysql_error());
}
while ($row = mysql_fetch_assoc($result))
{
$count = $row['views']++;
}
$query = "UPDATE members SET views = '$count' WHERE mid = " . $_GET['mid'];
mysql_query($query);
mysql_close($conn);
// show the logo using header() and readfile(); // that part work
?>
D B:
CREATE TABLE `members` (
`mid` int(11) NOT NULL AUTO_INCREMENT,
`views` int(11) DEFAULT '0',
/* etc...*/
PRIMARY KEY (`mid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
現在,我在.htaccess文件中所做的是:
RewriteEngine On
RewriteRule ^img/logo([0-9]+).jpg$ /counter.php?mid=$1 [L]
但由於某些原因,我的計數器計數不正確。 我想念什么?
您可能可以簡化它並執行以下操作:
$query = "UPDATE members SET views = views + 1 WHERE mid = " . $_GET['mid'];
mysql_query($query);
if (mysql_affected_rows() == 0) {
mail(ADMIN, 'Cannot Get: ' . mysql_error(), mysql_error());
}
mysql_close($conn);
無需進行初步檢查。
用這個
$count = $row['views'] + 1;
要么
$count = ++$row['views'];
要么
$query = "UPDATE members SET views = views + 1 WHERE mid = " . $_GET['mid'];
句法:
$x = 1;
$count = $x++;
// $count = 1
$x = 1;
$count = ++$x;
// $count = 2
問題出在行中
$count = $row['views']++;
這實際上是說:
-將視圖的值分配給$ count
-增加視圖。
但是你想要:
$count = ++$row['views'];
其中說:
-增加視圖。
-將視圖的(遞增)值分配給$ count
細微的差別。 :〜)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.