当前位置:首页 > PHP

php收藏实现

2026-01-30 00:52:34PHP

PHP 收藏功能实现方法

数据库设计

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

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实现无刷新收藏操作:

php收藏实现

$('.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实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…