php和mysql命中计数器,仅计数一次

php和mysql命中计数器,仅计数一次,php,mysql,sql,counter,hit,Php,Mysql,Sql,Counter,Hit,我试过几种方法,但我只能数一次。我在想我的数据库一定有问题吧?当我将数据库column“count”重置为0并刷新页面时,它将计数为1,但在此之后不再计数 <?php function update_count() { $query = "SELECT `count` FROM `hits`"; if($query_run = mysql_query($query)) { $count++; echo $count; $que

我试过几种方法,但我只能数一次。我在想我的数据库一定有问题吧?当我将数据库column“count”重置为0并刷新页面时,它将计数为1,但在此之后不再计数

<?php
function update_count() {
    $query = "SELECT `count` FROM `hits`";
    if($query_run = mysql_query($query)) {
        $count++;
        echo $count;
        $query_count = "UPDATE `hits` set `count`='$count'";
        mysql_query($query_count);
    }
}
update_count();
?>

刷新页面(或再次运行脚本)时,没有上一次执行的“直接”内存。脚本结束时,
$count
值将丢失。(即使您在代码中多次调用
update\u count
$count
也仅在您的函数范围内设置)


如果你想达到类似的效果,你必须以某种方式将计数存储在cookie、数据库或(但可能是最糟糕的方式)直接存储在文件中。

这是因为当你刷新页面时,
$count
丢失,你需要从数据库中重新选择它:

$query = "SELECT `count` as cnt FROM `hits`";
$results = mysql_query($query);
$count = mysql_fetch_array($result); // take only the first row.
print_r($count['cnt']);

一个简单的说明是,
mysql.*
函数不推荐使用或。

您没有将数据库中的计数分配给变量,而只是增加一个新变量(这会引发一个错误-注意:未定义的变量:计数…-您是否禁用了错误检查?),而没有实际分配数据库值。因此,为什么总是得到1—您正在创建一个新值0,并在每次刷新时向其添加1

你需要-

$row = mysql_fetch_row($result);
$count = $row[0];
$count++;
注意:我建议您不要在数据库中使用count作为字段名,因为它在MySQL和PHP中都是保留字。它可能会导致意外的错误/输出

试试这个(),因为已经指出您使用的逻辑在查询中是错误的

function updateCount() {

# Update count
$queryUpdate = $db->prepare('UPDATE hits SET hitcount = hitcount + 1');
$queryUpdate->execute();

# Get the updated count value
$queryCount = $dbo->('SELECT hitcount FROM hits');
$queryCount->execute();

    # Check that a result is returned and assign result 
    if ($result = $queryCount->fetch(PDO::FETCH_OBJ) {
    return $result->hitcount;
    }

}

# Echo returned value
$value = updateCount();
echo $value;

你想做什么?你只是检查查询是否成功运行,你没有从查询中返回任何数据,因此,
$count
不会计算任何东西它是一个命中计数器,我希望它在每次有人进入我的网站时加1,或者刷新你正在运行查询以获取计数值,但不使用它。您需要使用查询返回的计数,将其递增并再次存储。谢谢,我想我理解了,我添加了$count=mysql\u result($query\u run,0,'count');在计数++之前,它是否知道上一个值?我说的对吗?谢谢你的回答。如果你有时间,一定要按照上面提到的答案,或者最好是PDO来调查mysqli。这是值得的,而且更容易写/读。谢谢你的回答