php怎么实现记账功能实现
数据库设计
创建一个数据库表来存储记账数据,表结构可以包含以下字段:
id:自增主键amount:金额(DECIMAL类型)category:分类(如餐饮、交通等)type:类型(收入或支出)note:备注date:日期
SQL创建表语句示例:
CREATE TABLE accounting (
id INT AUTO_INCREMENT PRIMARY KEY,
amount DECIMAL(10,2) NOT NULL,
category VARCHAR(50) NOT NULL,
type ENUM('income', 'expense') NOT NULL,
note TEXT,
date DATE NOT NULL
);
连接数据库
使用PDO连接MySQL数据库:
$host = 'localhost';
$dbname = 'accounting_db';
$username = 'root';
$password = '';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
die("数据库连接失败: " . $e->getMessage());
}
添加记账记录
创建表单提交处理逻辑:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$amount = $_POST['amount'];
$category = $_POST['category'];
$type = $_POST['type'];
$note = $_POST['note'];
$date = $_POST['date'];
$stmt = $pdo->prepare("INSERT INTO accounting (amount, category, type, note, date) VALUES (?, ?, ?, ?, ?)");
$stmt->execute([$amount, $category, $type, $note, $date]);
}
显示记账记录
查询并显示记账数据:
$stmt = $pdo->query("SELECT * FROM accounting ORDER BY date DESC");
$records = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($records as $record) {
echo "金额: {$record['amount']}, 分类: {$record['category']}, 类型: {$record['type']}, 日期: {$record['date']}<br>";
}
统计功能
实现收支统计:

// 总收入
$stmt = $pdo->query("SELECT SUM(amount) as total_income FROM accounting WHERE type = 'income'");
$totalIncome = $stmt->fetchColumn();
// 总支出
$stmt = $pdo->query("SELECT SUM(amount) as total_expense FROM accounting WHERE type = 'expense'");
$totalExpense = $stmt->fetchColumn();
// 余额
$balance = $totalIncome - $totalExpense;
分类统计
按分类统计支出或收入:
$stmt = $pdo->query("SELECT category, SUM(amount) as total FROM accounting WHERE type = 'expense' GROUP BY category");
$categoryStats = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($categoryStats as $stat) {
echo "分类: {$stat['category']}, 总支出: {$stat['total']}<br>";
}
前端界面
创建简单的HTML表单:
<form method="post">
<label>金额: <input type="number" step="0.01" name="amount" required></label><br>
<label>分类:
<select name="category" required>
<option value="餐饮">餐饮</option>
<option value="交通">交通</option>
<option value="购物">购物</option>
</select>
</label><br>
<label>类型:
<select name="type" required>
<option value="income">收入</option>
<option value="expense">支出</option>
</select>
</label><br>
<label>备注: <textarea name="note"></textarea></label><br>
<label>日期: <input type="date" name="date" required></label><br>
<button type="submit">提交</button>
</form>
安全措施
添加输入验证和防SQL注入:
$amount = filter_var($_POST['amount'], FILTER_VALIDATE_FLOAT);
if ($amount === false) {
die("金额必须为数字");
}
// 使用预处理语句防止SQL注入
$stmt = $pdo->prepare("INSERT INTO accounting (...) VALUES (?, ?, ?, ?, ?)");
$stmt->execute([...]);
扩展功能建议
- 添加用户认证系统,使不同用户可以管理自己的账本
- 实现数据导出为Excel或CSV功能
- 添加图表展示收支趋势
- 开发按月统计和报表功能
- 添加预算设置和超支提醒功能






