
在flutter应用中,当用户对某个项目进行点赞操作后,若希望该状态在应用关闭并重新打开后依然保持,核心思想是将用户的点赞行为记录在后端数据库中。每次应用启动或相关页面加载时,flutter应用会向后端请求当前用户的点赞数据,并根据这些数据来初始化和更新点赞按钮的显示状态。这种方法确保了点赞状态的持久性和跨设备同步。
数据库设计 我们需要一个专门的表来记录用户与项目之间的点赞关系。假设我们有 users 表(存储用户信息)和 items 表(存储可被点赞的项目信息)。我们可以创建一个 likes 表来记录点赞行为:
CREATE TABLE likes (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
item_id INT NOT NULL,
status TINYINT(1) DEFAULT 1, -- 1 for liked, 0 for unliked
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY (user_id, item_id) -- 确保每个用户对每个项目只有一条记录
);API接口设计 我们需要两个主要的API接口来处理点赞逻辑:
PHP后端代码示例
db_connect.php (数据库连接)
<?php
$servername = "localhost";
$username = "your_db_user";
$password = "your_db_password";
$dbname = "your_db_name";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// 设置字符集
$conn->set_charset("utf8mb4");
?>toggle_like.php (处理点赞/取消点赞) 此脚本接收用户ID、项目ID和期望的状态,并据此在 likes 表中插入或更新记录。
<?php
include 'db_connect.php';
header('Content-Type: application/json');
$input = json_decode(file_get_contents('php://input'), true);
$userId = $input['user_id'] ?? null;
$itemId = $input['item_id'] ?? null;
$status = $input['status'] ?? null; // 1 for like, 0 for unlike
if ($userId === null || $itemId === null || $status === null) {
echo json_encode(['success' => false, 'message' => 'Invalid input']);
exit;
}
// 使用预处理语句防止SQL注入
$stmt = $conn->prepare("SELECT id FROM likes WHERE user_id = ? AND item_id = ?");
$stmt->bind_param("ii", $userId, $itemId);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
// 记录存在,更新其状态
$stmt = $conn->prepare("UPDATE likes SET status = ?, updated_at = NOW() WHERE user_id = ? AND item_id = ?");
$stmt->bind_param("iii", $status, $userId, $itemId);以上就是Flutter与PHP/MySQL:点赞按钮状态的持久化管理的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号