我尝试了几种方法,但我只能算一次。我在想我的数据库一定有问题吗?当我重置我的数据库coloumn" 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();
?>
答案 0 :(得分:3)
那是因为当您刷新页面时$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_*
函数已弃用mysqli_*
或prepared statements。
答案 1 :(得分:2)
当您刷新页面(或再次运行脚本)时,没有&#34;直接&#34;上一次执行的记忆。脚本结束时,$count
值将丢失。 (即使您在代码中多次调用update_count
,$count
仅在您的函数范围内设置)
如果你想要实现类似的东西,你将不得不以某种方式存储该数量:在cookie中,在数据库中或(但可能是最差的方式)直接在文件中。
答案 2 :(得分:1)
您没有将数据库中的计数分配给变量,而只是递增一个新变量(应该抛出错误 - 注意:未定义的变量:count ... - 您是否禁用了错误检查?)实际上分配您的数据库值。因此,为什么你总是得到1 - 你每次刷新时都会创建一个0的新值并加1。
你需要 -
$row = mysql_fetch_row($result);
$count = $row[0];
$count++;
注意我建议你不要在你的数据库中使用count作为字段名,因为它是MySQL和PHP中的保留字。它可能导致意外错误/输出。 Try having a look at this thread。
尝试此操作(assuming you have PDO and your connection declared),因为已经指出您使用的逻辑对您的查询有误。
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;