当前位置:首页 > PHP

PHP实现搜索记录

2026-03-13 09:24:53PHP

实现搜索记录功能

在PHP中实现搜索记录功能通常涉及将用户的搜索关键词存储到数据库或缓存中,并在需要时展示给用户。以下是具体实现方法:

数据库表设计

创建一个用于存储搜索记录的表:

CREATE TABLE search_history (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    keyword VARCHAR(255),
    search_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

存储搜索记录

当用户执行搜索时,将关键词插入数据库:

PHP实现搜索记录

function saveSearchHistory($userId, $keyword) {
    $db = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
    $stmt = $db->prepare("INSERT INTO search_history (user_id, keyword) VALUES (?, ?)");
    $stmt->execute([$userId, $keyword]);
}

获取搜索记录

显示用户最近的搜索记录:

function getSearchHistory($userId, $limit = 5) {
    $db = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
    $stmt = $db->prepare("SELECT keyword FROM search_history WHERE user_id = ? ORDER BY search_time DESC LIMIT ?");
    $stmt->execute([$userId, $limit]);
    return $stmt->fetchAll(PDO::FETCH_COLUMN);
}

使用Session存储临时记录

对于未登录用户,可以使用Session临时存储搜索记录:

PHP实现搜索记录

session_start();

if (!isset($_SESSION['search_history'])) {
    $_SESSION['search_history'] = [];
}

// 添加新搜索
array_unshift($_SESSION['search_history'], $_GET['q']);
$_SESSION['search_history'] = array_slice(array_unique($_SESSION['search_history']), 0, 5);

前端展示搜索记录

在搜索结果页或搜索框下方显示历史记录:

<div class="search-history">
    <h3>最近搜索</h3>
    <ul>
        <?php foreach(getSearchHistory($currentUserId) as $keyword): ?>
            <li><a href="/search?q=<?= urlencode($keyword) ?>"><?= htmlspecialchars($keyword) ?></a></li>
        <?php endforeach; ?>
    </ul>
</div>

定期清理旧记录

设置定时任务清理超过一定时间的记录:

function cleanOldSearchHistory($days = 30) {
    $db = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
    $stmt = $db->prepare("DELETE FROM search_history WHERE search_time < DATE_SUB(NOW(), INTERVAL ? DAY)");
    $stmt->execute([$days]);
}

安全注意事项

对所有用户输入进行过滤和转义:

$keyword = filter_input(INPUT_GET, 'q', FILTER_SANITIZE_STRING);

以上方法可以根据实际需求进行组合或调整,例如添加搜索次数统计、热门搜索推荐等功能。

标签: PHP
分享给朋友:

相关文章

单例模式的实现PHP

单例模式的实现PHP

单例模式的基本概念 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点。适用于需要全局唯一对象的场景,如数据库连接、日志管理等。 PHP 单例模式的实现步骤 私有化构造函数…

PHP实现图文聊天

PHP实现图文聊天

PHP实现图文聊天的方法 数据库设计 创建数据库表存储聊天消息,包含字段如消息ID、发送者ID、接收者ID、消息内容、消息类型(文本/图片)、发送时间等。使用MySQL或其他数据库管理系统。 CRE…

拼团 PHP实现

拼团 PHP实现

拼团功能 PHP 实现 拼团是一种常见的电商营销模式,允许用户邀请好友一起购买商品,达到指定人数后享受优惠价格。以下是使用 PHP 实现拼团功能的关键步骤和代码示例。 数据库设计 拼团功能通常需要设…

PHP中实现重定向

PHP中实现重定向

PHP重定向的实现方法 在PHP中,重定向是通过发送HTTP头信息来实现的。以下是几种常见的重定向方法: 使用header()函数 header("Location: https://exampl…

域名转短域名PHP实现

域名转短域名PHP实现

短域名服务的基本原理 短域名服务通过将长URL映射到更短的唯一字符串实现跳转。核心步骤包括生成短码、存储原始URL与短码的对应关系、通过短码重定向到原始URL。 生成短码的常见方法 Base62编码…

PHP实现numpy

PHP实现numpy

在PHP中实现类似NumPy的功能,可以通过结合PHP的数组操作、扩展库或第三方工具来模拟部分功能。以下是几种常见方法: 使用PHP数组和内置函数 PHP的数组支持多维操作,结合内置数学函数可实现基…