为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 1 添加到我的数据库中的“kijkers”表中。它用于计算网站被访问的次数

如何将 1 添加到我的数据库中的“kijkers”表中。它用于计算网站被访问的次数

PHP
FFIVE 2022-01-14 17:14:14
我有这个代码,当你打开网站时它应该加 1,但它会在当前数字上加 1 并且不会更新它。它应该更新它,以便正确显示访问量。“Kijkers”是 0,所以当我打开它时它会变为 1,但之后它不会更新它。我尝试改变一些东西,但没有成功。<?php    include 'db_conn.php';    $find_counts = "SELECT * FROM visitors";    $result = mysqli_query($conn, $find_counts);    while ($row = mysqli_fetch_assoc($result))     {        //Kijkers = 0 in database        $current_counts = $row['Kijkers'];        $new_count = $current_counts + 1;        $update_count = "UPDATE visitors SET Kijkers='$new_count'";        echo $new_count;    }?>我希望它会更新它并在刷新或重新加载页面时继续添加 1。
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

你的方法有两个问题。


第一个是您没有执行更新查询。这可以通过添加mysqli_query($conn, $update_count)语句轻松解决。


第二个问题更隐蔽:您的事务不是原子的。考虑以下两个用户几乎同时访问的情况。假设Kijkers此时的值为 10:


User A            | User B

------            | ------

select value 10   |

                  | select value 10

update value 11   |

                  | update value 11

                  |

                  V

因此,即使有两次单独的访问,您的计数也只会增加一。


因此,最好只根据数据库中的当前值执行更新查询:


$update_count = "UPDATE visitors SET Kijkers = Kijkers + 1";


if (mysqli_query($conn, $update_count)) {

    echo "<br>Record updated successfully";

} else {

    echo "Error updating record: " . mysqli_error($conn);

}

这是一个原子操作,解决了上述问题。


查看完整回答
反对 回复 2022-01-14
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

您不必事先获取 Kijkers 的当前值。您可以将增量语句发送到数据库。

像这样:

UPDATE visitors SET Kijkers=Kijkers + 1;


查看完整回答
反对 回复 2022-01-14
  • 2 回答
  • 0 关注
  • 210 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号