如果时间戳字段设置为它的价值,它不会被设置为当前时间戳,所以你可以简单地添加update_date = update_date
到查询:
UPDATE articles SET update_date = update_date, pageviews = pageviews + 1 WHERE id = :the_id;
但因为你实际上更新文章,update_date
松了一点点的意思。 我建议你在一个不同的表中记录访问,通过外键链接到文章,因此文章时间戳只有在文章内容真正更新时才会更新,而不仅仅是其页面浏览次数:
例如,它可以是一个表访问,其中这里的物品ID#1具有13次,和制品#3具有7的制品#2,不存在,没有视图:
+--+----------+--------+
|id|article_id|pageview|
+--+----------+--------+
| 1| 1 | 13 |
+--+----------+--------+
| 2| 3 | 7 |
+--+----------+--------+
然后到检索文章#3的浏览量:
SELECT pageview FROM visits WHERE article_id = 3;
这种分解还有一个好处,就是可以根据访问次数存储更多信息,通过访问查询字符串,用户代理存储一行,并且访问者记录其user_id例如:
complete_visits
+--+----------+-----------------------------+-------+-------+-------------------+
|id|article_id|querystring |UA |user_id|visit_date |
+--+----------+-----------------------------+-------+-------+-------------------+
| 1| 1 | /article/1/?search=test |Firefox|null |2012-12-12 12:12:12|
+--+----------+-----------------------------+-------+-------+-------------------+
| 2| 1 | /article/1/ |Firefox|12 |2012-12-13 12:12:12|
+--+----------+-----------------------------+-------+-------+-------------------+
| 3| 1 | /article/1/?search=a |Firefox|null |2012-12-14 12:12:12|
+--+----------+-----------------------------+-------+-------+-------------------+
| 4| 1 | /article/1/?search=b |Firefox|null |2012-12-15 12:12:12|
+--+----------+-----------------------------+-------+-------+-------------------+
| 5| 1 | /article/1/?search=c |Firefox|null |2012-12-16 12:12:12|
+--+----------+-----------------------------+-------+-------+-------------------+
| 6| 1 | /article/1/?order=asc |IE |null |2012-12-17 12:12:12|
+--+----------+-----------------------------+-------+-------+-------------------+
| 7| 3 | /article/3/ |Chrome |null |2012-12-18 12:12:12|
+--+----------+-----------------------------+-------+-------+-------------------+
| 8| 3 | /article/3/ |Firefox|4 |2012-12-19 12:12:12|
+--+----------+-----------------------------+-------+-------+-------------------+
| 9| 3 | /article/3/?search=test |Firefox|null |2012-12-20 12:12:12|
+--+----------+-----------------------------+-------+-------+-------------------+
要检索的网页浏览量为文章#3:
SELECT COUNT(id) FROM complete_visits WHERE article_id = 3;
是的,但问题是......怎么样? :) – mauro269
*“有没有可能......”*不是在问怎么问,而是问如何太广泛。 –
我建议你在不同的表中记录访问,通过外键链接到文章,文章时间戳只会在文章更新时更新,而不会更新其页面浏览量。 – Veve