当前位置:首页 > PHP

php实现搜索查询功能实现

2026-01-30 05:35:35PHP

数据库连接与配置

使用PDO或MySQLi建立数据库连接。以下为PDO示例代码:

$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Connection failed: " . $e->getMessage());
}

创建搜索表单

HTML表单用于接收用户输入的搜索关键词:

<form method="GET" action="search.php">
    <input type="text" name="search_query" placeholder="Enter search term...">
    <button type="submit">Search</button>
</form>

处理搜索请求

在PHP文件中处理搜索逻辑,使用预处理语句防止SQL注入:

if (isset($_GET['search_query'])) {
    $searchTerm = '%' . $_GET['search_query'] . '%';

    $stmt = $pdo->prepare("SELECT * FROM products 
                          WHERE name LIKE :search 
                          OR description LIKE :search");
    $stmt->bindParam(':search', $searchTerm);
    $stmt->execute();

    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

显示搜索结果

遍历查询结果并显示:

if (!empty($results)) {
    foreach ($results as $row) {
        echo "<div class='result-item'>";
        echo "<h3>" . htmlspecialchars($row['name']) . "</h3>";
        echo "<p>" . htmlspecialchars($row['description']) . "</p>";
        echo "</div>";
    }
} else {
    echo "No results found.";
}

高级搜索功能

实现多字段搜索和分页处理:

// 多字段搜索示例
$stmt = $pdo->prepare("SELECT * FROM products 
                      WHERE (name LIKE :search OR description LIKE :search)
                      AND price BETWEEN :min_price AND :max_price");
$stmt->execute([
    ':search' => $searchTerm,
    ':min_price' => $minPrice,
    ':max_price' => $maxPrice
]);

// 分页处理
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;

$stmt = $pdo->prepare("SELECT * FROM products 
                      WHERE name LIKE :search 
                      LIMIT :offset, :perPage");
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
$stmt->bindParam(':search', $searchTerm);
$stmt->execute();

全文索引优化

对于大型数据库,考虑使用MySQL的全文索引:

ALTER TABLE products ADD FULLTEXT(name, description);

PHP中使用MATCH AGAINST语法:

$stmt = $pdo->prepare("SELECT * FROM products 
                      WHERE MATCH(name, description) AGAINST(:search IN BOOLEAN MODE)");
$stmt->bindParam(':search', $_GET['search_query']);

安全注意事项

始终对输出进行转义防止XSS攻击:

htmlspecialchars($row['name'], ENT_QUOTES, 'UTF-8');

验证和过滤所有用户输入:

php实现搜索查询功能实现

$searchTerm = filter_input(INPUT_GET, 'search_query', FILTER_SANITIZE_STRING);

标签: 查询功能php
分享给朋友:

相关文章

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php 实现排名

php 实现排名

PHP 实现排名的方法 在 PHP 中实现排名功能通常涉及对数据进行排序、计算排名以及输出结果。以下是几种常见的实现方式: 基本数组排序排名 $scores = [85, 92, 78, 95, 8…

php无法实现的

php无法实现的

PHP 的局限性 PHP 是一种广泛使用的服务器端脚本语言,主要用于 Web 开发。尽管功能强大,但在某些场景下存在局限性。 操作系统级开发 PHP 不适合编写操作系统内核或底层驱动程序。这类任务通…

php实现投票

php实现投票

PHP实现投票功能 数据库设计 创建数据库表存储投票数据,例如: CREATE TABLE `votes` ( `id` int(11) NOT NULL AUTO_INCREMENT,…