当前位置:首页 > PHP

php中实现搜索

2026-02-16 11:59:07PHP

PHP 实现搜索功能

在 PHP 中实现搜索功能通常涉及数据库查询、表单处理和结果展示。以下是几种常见的实现方式:

基础数据库搜索

使用 MySQL 或其他数据库的 LIKE 运算符实现简单搜索:

$searchTerm = $_GET['search'] ?? '';
if (!empty($searchTerm)) {
    $query = "SELECT * FROM products WHERE name LIKE '%$searchTerm%'";
    $result = mysqli_query($connection, $query);
    while ($row = mysqli_fetch_assoc($result)) {
        echo $row['name'] . "<br>";
    }
}

预处理语句防止 SQL 注入

更安全的做法是使用预处理语句:

$searchTerm = $_GET['search'] ?? '';
if (!empty($searchTerm)) {
    $stmt = $connection->prepare("SELECT * FROM products WHERE name LIKE ?");
    $searchParam = "%$searchTerm%";
    $stmt->bind_param("s", $searchParam);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        echo $row['name'] . "<br>";
    }
}

全文索引搜索

对于更高效的文本搜索,可以使用 MySQL 的全文索引:

$searchTerm = $_GET['search'] ?? '';
if (!empty($searchTerm)) {
    $query = "SELECT * FROM products 
              WHERE MATCH(name, description) AGAINST(? IN BOOLEAN MODE)";
    $stmt = $connection->prepare($query);
    $stmt->bind_param("s", $searchTerm);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        echo $row['name'] . "<br>";
    }
}

前端搜索表单

HTML 表单示例:

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

高级搜索选项

实现多条件搜索:

$name = $_GET['name'] ?? '';
$category = $_GET['category'] ?? '';
$minPrice = $_GET['min_price'] ?? 0;

$conditions = [];
$params = [];
$types = '';

if (!empty($name)) {
    $conditions[] = "name LIKE ?";
    $params[] = "%$name%";
    $types .= 's';
}

if (!empty($category)) {
    $conditions[] = "category_id = ?";
    $params[] = $category;
    $types .= 'i';
}

if (!empty($minPrice)) {
    $conditions[] = "price >= ?";
    $params[] = $minPrice;
    $types .= 'd';
}

$query = "SELECT * FROM products";
if (!empty($conditions)) {
    $query .= " WHERE " . implode(" AND ", $conditions);
}

$stmt = $connection->prepare($query);
if (!empty($params)) {
    $stmt->bind_param($types, ...$params);
}
$stmt->execute();

使用搜索引擎

对于大型网站,可以集成 Elasticsearch 或 Algolia 等专业搜索引擎:

// Elasticsearch 示例
$client = Elasticsearch\ClientBuilder::create()->build();
$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'match' => [
                'name' => $_GET['search']
            ]
        ]
    ]
];

$response = $client->search($params);
foreach ($response['hits']['hits'] as $hit) {
    echo $hit['_source']['name'] . "<br>";
}

分页处理

搜索结果分页实现:

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

$query = "SELECT * FROM products WHERE name LIKE ? LIMIT ? OFFSET ?";
$stmt = $connection->prepare($query);
$searchParam = "%$searchTerm%";
$stmt->bind_param("sii", $searchParam, $limit, $offset);
$stmt->execute();

根据具体需求选择合适的实现方式,小型网站可以使用简单的数据库查询,而大型项目可能需要专业搜索引擎解决方案。

php中实现搜索

标签: php
分享给朋友:

相关文章

php如何实现直播

php如何实现直播

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

php实现登录

php实现登录

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

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT A…

php 实现下载

php 实现下载

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

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…