当前位置:首页 > PHP

php实现搜索

2026-04-02 20:14:00PHP

PHP实现搜索功能

在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中创建全文索引:

php实现搜索

ALTER TABLE products ADD FULLTEXT(name, description);

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实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移除…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…

php 实现接口

php 实现接口

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

php无限分类的实现

php无限分类的实现

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

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…

php 实现跳转

php 实现跳转

PHP 实现页面跳转的方法 在PHP中,实现页面跳转可以通过多种方式完成,以下是几种常用的方法: 使用header函数 header函数是PHP中最常用的跳转方法,通过发送HTTP头部信息实现跳转。…