You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让JavaScript蜡烛计数刷新后不丢失?求数据库连接指导

解决蜡烛计数刷新重置的方案

你当前的代码把计数存在浏览器的内存变量里,页面刷新后变量就会被清空,所以得把计数持久化存到数据库里,需要后端代码配合前端完成读写操作。下面给你一步步的实现步骤,用新手最容易上手的PHP+MySQL组合(如果你的服务器支持其他后端语言,核心逻辑可以直接类比):

1. 创建数据库存储表

登录你的数据库管理工具(比如phpMyAdmin),执行以下SQL语句创建一个专门存蜡烛计数的表:

CREATE TABLE candle_counts (
    id INT PRIMARY KEY AUTO_INCREMENT,
    total INT NOT NULL DEFAULT 0
);
-- 插入初始计数(默认从0开始)
INSERT INTO candle_counts (total) VALUES (0);

2. 编写后端接口(两个PHP文件)

拆分两个简单接口,分别负责读取当前计数和增加计数:

接口1:get_count.php(获取当前蜡烛总数)

<?php
// 替换成你的数据库信息
$servername = "localhost";
$username = "你的数据库用户名";
$password = "你的数据库密码";
$dbname = "你的数据库名";

// 建立数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 查询当前总计数
$sql = "SELECT total FROM candle_counts WHERE id = 1";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    echo $row["total"];
} else {
    echo "0";
}
$conn->close();
?>

接口2:add_candle.php(增加一个蜡烛计数)

<?php
// 替换成你的数据库信息
$servername = "localhost";
$username = "你的数据库用户名";
$password = "你的数据库密码";
$dbname = "你的数据库名";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 执行计数+1操作
$sql = "UPDATE candle_counts SET total = total + 1 WHERE id = 1";
if ($conn->query($sql) === TRUE) {
    echo "success";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>

3. 修改前端代码

把原来的前端代码改成通过AJAX请求后端接口的形式,实现页面加载读取计数、点击按钮更新计数的功能:

<!DOCTYPE html>
<html>
<body>
    <button onclick="lightCandle()">Light a Candle</button>
    <p id="candle"></p>

    <script>
        // 页面加载完成后,先获取最新的蜡烛总数
        window.onload = function() {
            fetch('get_count.php')
                .then(res => res.text())
                .then(count => {
                    document.getElementById("candle").innerHTML = count + " Candles lit";
                });
        };

        function lightCandle() {
            // 请求后端增加计数
            fetch('add_candle.php')
                .then(() => {
                    // 计数更新后,重新获取最新数值并刷新页面显示
                    fetch('get_count.php')
                        .then(res => res.text())
                        .then(count => {
                            document.getElementById("candle").innerHTML = count + " Candles lit";
                        });
                });
        }
    </script>
</body>
</html>

新手注意事项

  • 一定要把两个PHP文件里的数据库连接信息(服务器名、用户名、密码、数据库名)替换成你自己的,确保和网站数据库匹配。
  • 如果你的服务器用的是Node.js、Python等其他后端语言,核心逻辑完全一致:写接口读取数据库计数、写接口更新计数,前端用fetch调用这些接口即可。
  • 要是怕有人恶意刷蜡烛,可以后续加个简单限制,比如记录访客IP,一段时间内只允许点一次(这个可以先不用急,等核心功能跑通再优化)。

内容的提问来源于stack exchange,提问作者Andrea Kuska

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:50:10