PHP:如何增加表行中的值以计算 View 并将计数限制为一个 IP 地址

标签 php mysql sql ip

每次查看某些 map 时,我都会使用以下代码将数字插入“mviews”。

问题 1. 在下面的代码中,我应该在何处添加“ON DUPLICATE KEY UPDATE mviews = mviews+ 1”以便它可以在重复时递增?

问题2.如何限制一个IP的计数?

问题 3. 如何限制此 IP 仅在 24 小时内增加 'mviews'?每24小时只计算第一次观看,第一次观看后24小时内的其余观看不计算在内。

<?php
require_once 'db_conx.php';
$result = mysql_query( "UPDATE profiles SET mviews = '1' WHERE pid = '2' ")  or die (mysql_error());
  /*ON DUPLICATE KEY UPDATE mviews = mviews+ 1 */               
if($result){
                echo "Views + 1";
                }
                else {
                     echo "Views inser error";
                }
mysql_close($con);
?> 

最佳答案

DUPLICATE KEY UPDATE

INSERT 一起使用,而不与 UPDATE 语句一起使用 DOCS

一个IP的计数会是这样

SELECT COUNT(*) FROM profiles WHERE IP = "127.1.0.0";

[如果你不是在找我上面写的]

如果IP地址是你的主键

INSERT INTO 
profiles (ip,views) 
VALUES ("127.1.0.0",1)
ON DUPLICATE KEY 
UPDATE views=views+1;

如果你想让你的代码正常工作[不要使用 mysql_* 也转义用户输入]

<?php
require_once 'db_conx.php';
$result = mysql_query( "SELECT * FROM profiles WHERE pid =2")  or die (mysql_error());
  /*ON DUPLICATE KEY UPDATE mviews = mviews+ 1 */               
if(mysql_num_rows($result) == 0){
     mysql_query( "INSERT INTO profiles (views) value(1) ")  or die (mysql_error());
    }else {
             mysql_query( "UPDATE profiles SET mviews = mviews +1 WHERE pid = '2' ")  or die (mysql_error());
      }
mysql_close($con);
?> 

关于PHP:如何增加表行中的值以计算 View 并将计数限制为一个 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19830873/

相关文章:

mysql - 什么是正确的 MySql FULL JOIN 语法?

javascript - PHP 脚本检索 JSON 文件 - 如何将其传递给 JavaScript?

php - php 从数组中获取值

php - 我的 wordpress 主题的字符问题

mysql - Javascript 中的 PHP 代码 - 如何传递变量

sql - 如何在 SQL 中拆分数据

php - 用一个换行符替换多个换行符

php - 错误 : Unknown column in field list

php - Doctrine2 将不可变字段移动到单独的类中

php - 谁能告诉我这个PHP代码有什么问题吗?不会将数据添加到我的WAMP数据库中