当前位置:首页 > PHP

php收藏实现

2026-01-30 00:52:34PHP

PHP 收藏功能实现方法

数据库设计

创建一个表来存储用户收藏数据,基本字段包括:

CREATE TABLE `user_favorites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `item_id` int(11) NOT NULL,
  `item_type` varchar(50) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_item` (`user_id`,`item_id`,`item_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

添加收藏功能

function addFavorite($userId, $itemId, $itemType) {
    $pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
    $stmt = $pdo->prepare("INSERT INTO user_favorites (user_id, item_id, item_type) VALUES (?, ?, ?)");
    return $stmt->execute([$userId, $itemId, $itemType]);
}

移除收藏功能

function removeFavorite($userId, $itemId, $itemType) {
    $pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
    $stmt = $pdo->prepare("DELETE FROM user_favorites WHERE user_id = ? AND item_id = ? AND item_type = ?");
    return $stmt->execute([$userId, $itemId, $itemType]);
}

检查收藏状态

function isFavorite($userId, $itemId, $itemType) {
    $pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
    $stmt = $pdo->prepare("SELECT COUNT(*) FROM user_favorites WHERE user_id = ? AND item_id = ? AND item_type = ?");
    $stmt->execute([$userId, $itemId, $itemType]);
    return $stmt->fetchColumn() > 0;
}

获取用户收藏列表

function getUserFavorites($userId, $itemType = null) {
    $pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
    $sql = "SELECT item_id, item_type FROM user_favorites WHERE user_id = ?";
    $params = [$userId];

    if ($itemType) {
        $sql .= " AND item_type = ?";
        $params[] = $itemType;
    }

    $stmt = $pdo->prepare($sql);
    $stmt->execute($params);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

前端交互实现

使用AJAX实现无刷新收藏操作:

$('.favorite-btn').click(function() {
    const itemId = $(this).data('item-id');
    const itemType = $(this).data('item-type');

    $.post('/favorite_toggle.php', {
        item_id: itemId,
        item_type: itemType
    }, function(response) {
        if(response.status === 'added') {
            $(this).addClass('active');
        } else {
            $(this).removeClass('active');
        }
    });
});

安全性考虑

实现收藏功能时需要注意:

  • 验证用户登录状态
  • 对输入参数进行过滤和验证
  • 使用预处理语句防止SQL注入
  • 限制单个用户的收藏数量

性能优化建议

对于大量收藏数据:

  • 添加适当的索引
  • 考虑分页加载收藏列表
  • 实现缓存机制减少数据库查询

php收藏实现

标签: 收藏php
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (H…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Rat…

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTM…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $d…