当前位置:首页 > PHP

php实现搜索实例

2026-02-15 11:50:46PHP

PHP 实现搜索功能

数据库准备

确保有一个数据库表用于存储搜索内容。例如,创建一个包含 id, title, content 字段的 articles 表。

CREATE TABLE articles (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255),
    content TEXT
);

基础搜索实现

通过 SQL 的 LIKE 语句实现简单搜索功能。

php实现搜索实例

<?php
$searchTerm = $_GET['search'] ?? '';
$results = [];

if (!empty($searchTerm)) {
    $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    $stmt = $db->prepare("SELECT * FROM articles WHERE title LIKE :term OR content LIKE :term");
    $stmt->execute([':term' => "%$searchTerm%"]);
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
?>

<form method="GET">
    <input type="text" name="search" placeholder="搜索...">
    <button type="submit">搜索</button>
</form>

<?php if (!empty($results)): ?>
    <ul>
        <?php foreach ($results as $result): ?>
            <li>
                <h3><?php echo htmlspecialchars($result['title']); ?></h3>
                <p><?php echo htmlspecialchars($result['content']); ?></p>
            </li>
        <?php endforeach; ?>
    </ul>
<?php endif; ?>

全文索引优化

对于大量数据,使用 MySQL 的全文索引 (FULLTEXT) 提高搜索效率。

php实现搜索实例

ALTER TABLE articles ADD FULLTEXT(title, content);

修改 PHP 代码使用 MATCH AGAINST 语法:

$stmt = $db->prepare("SELECT * FROM articles WHERE MATCH(title, content) AGAINST(:term IN NATURAL LANGUAGE MODE)");
$stmt->execute([':term' => $searchTerm]);

分页处理

添加分页功能避免结果过多。

$page = $_GET['page'] ?? 1;
$limit = 10;
$offset = ($page - 1) * $limit;

$stmt = $db->prepare("SELECT * FROM articles WHERE MATCH(title, content) AGAINST(:term) LIMIT :limit OFFSET :offset");
$stmt->bindParam(':term', $searchTerm);
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();

安全与性能建议

  • 使用预处理语句防止 SQL 注入
  • 对输出内容使用 htmlspecialchars() 防止 XSS
  • 对于超大规模数据考虑 Elasticsearch 或 Solr
  • 添加搜索关键词高亮功能提升用户体验

标签: 实例php
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使用…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

php https实现

php https实现

PHP 中实现 HTTPS 的方法 在 PHP 中实现 HTTPS 主要通过配置服务器和编写代码来确保通信的安全性。以下是几种常见的方法: 配置服务器支持 HTTPS 确保服务器已安装 SSL/T…