資料庫準備
mysql> create database counter;
mysql> use counter;
mysql> create table tl(
id int(2),
count int(5)
);
mysql> insert into tl(id, count) values(1, 1);
計數器核心邏輯
- 連接 MySQL
- 查詢當前計數
- 計數 +1
- 顯示新計數
- 更新資料庫
- 關閉連接
完整頁面代碼
<html>
<body>
<?php
$myvar = "來訪人數:";
echo $myvar;
?>
<?php
$conn = mysql_connect() or die("無法連接 MySQL!");
$query = "select * from tl";
$result = mysql_db_query("counter", $query);
if ($result) {
$row = mysql_fetch_array($result);
$counter = $row["count"];
$counter++;
echo $counter;
$update = "update tl set count='$counter' where id=1";
mysql_db_query("counter", $update);
mysql_close();
}
?>
</body>
</html>
關鍵點提示
mysql_db_query() 為 PHP 4 風格函數,PHP 5+ 建議改用 mysqli 或 PDO
- 生產環境需考慮並發:使用
UPDATE ... SET count = count + 1 原子操作或表鎖
- 防止重複計數:結合 Session/Cookie 判斷同一訪客單次訪問
- 錯誤處理:生產環境應關閉
display_errors,記錄日誌而非直接輸出
現代化改寫建議 (PDO)
<?php
$pdo = new PDO("mysql:host=localhost;dbname=counter", 'user', 'pass');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare("UPDATE tl SET count = count + 1 WHERE id = 1");
$stmt->execute();
$stmt = $pdo->query("SELECT count FROM tl WHERE id = 1");
$count = $stmt->fetchColumn();
echo "來訪人數:$count";
?>