当前位置:首页 > PHP

php实现搜索

2026-04-02 20:14:00PHP

PHP实现搜索功能

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

基础数据库搜索

// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');

// 获取搜索关键词
$search = isset($_GET['search']) ? $_GET['search'] : '';

// 执行查询
if (!empty($search)) {
    $stmt = $conn->prepare("SELECT * FROM products WHERE name LIKE ?");
    $searchTerm = "%$search%";
    $stmt->bind_param("s", $searchTerm);
    $stmt->execute();
    $result = $stmt->get_result();

    while ($row = $result->fetch_assoc()) {
        echo $row['name'] . "<br>";
    }
}

多条件搜索

$search = $_GET['search'] ?? '';
$category = $_GET['category'] ?? '';

$query = "SELECT * FROM products WHERE 1=1";
$params = [];
$types = '';

if (!empty($search)) {
    $query .= " AND (name LIKE ? OR description LIKE ?)";
    $params[] = "%$search%";
    $params[] = "%$search%";
    $types .= 'ss';
}

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

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

全文索引搜索(MySQL)

对于更高效的搜索,可以在MySQL中创建全文索引:

ALTER TABLE products ADD FULLTEXT(name, description);

PHP代码:

php实现搜索

$search = $_GET['search'] ?? '';
if (!empty($search)) {
    $stmt = $conn->prepare("SELECT * FROM products 
        WHERE MATCH(name, description) AGAINST(? IN BOOLEAN MODE)");
    $stmt->bind_param("s", $search);
    $stmt->execute();
    // 处理结果...
}

前端表单示例

<form method="GET" action="search.php">
    <input type="text" name="search" placeholder="输入关键词...">
    <select name="category">
        <option value="">所有分类</option>
        <option value="1">电子产品</option>
        <option value="2">服装</option>
    </select>
    <button type="submit">搜索</button>
</form>

搜索结果分页

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

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

// 获取总记录数
$totalResult = $conn->query("SELECT FOUND_ROWS()");
$totalRows = $totalResult->fetch_row()[0];
$totalPages = ceil($totalRows / $limit);

安全注意事项

  1. 始终使用预处理语句防止SQL注入
  2. 对用户输入进行验证和过滤
  3. 限制搜索结果的返回数量
  4. 对敏感数据进行访问控制

这些方法可以根据具体需求进行调整和组合,构建适合不同场景的搜索功能。

标签: php
分享给朋友:

相关文章

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口通…

php验证码的实现

php验证码的实现

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

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…

php 实现面包屑导航

php 实现面包屑导航

实现面包屑导航的方法 面包屑导航(Breadcrumb Navigation)是一种常见的网站导航方式,用于显示用户当前页面的路径。以下是几种在 PHP 中实现面包屑导航的方法。 基于 URL 路径…

php实现注册登陆

php实现注册登陆

PHP 注册功能实现 创建数据库表结构(MySQL示例): CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…