php实现检索
PHP实现检索功能
在PHP中实现检索功能通常涉及数据库查询、表单处理和结果展示。以下是几种常见的实现方法:
使用MySQL数据库检索
连接数据库并执行查询:
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$searchTerm = $_GET['search'];
$sql = "SELECT * FROM products WHERE name LIKE '%$searchTerm%'";
$result = $conn->query($sql);
使用预处理语句防止SQL注入
更安全的做法是使用预处理语句:
$stmt = $conn->prepare("SELECT * FROM products WHERE name LIKE ?");
$searchParam = "%" . $searchTerm . "%";
$stmt->bind_param("s", $searchParam);
$stmt->execute();
$result = $stmt->get_result();
实现分页功能
对于大量结果,添加分页支持:

$perPage = 10;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
$sql = "SELECT * FROM products WHERE name LIKE ? LIMIT ?, ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sii", $searchParam, $offset, $perPage);
使用全文索引提高效率
对于大型数据库,考虑使用全文索引:
$sql = "SELECT * FROM products WHERE MATCH(name, description) AGAINST(? IN BOOLEAN MODE)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $searchTerm);
实现多条件搜索
构建动态查询实现多条件搜索:

$conditions = [];
$params = [];
$types = "";
if (!empty($_GET['name'])) {
$conditions[] = "name LIKE ?";
$params[] = "%" . $_GET['name'] . "%";
$types .= "s";
}
if (!empty($_GET['price_min'])) {
$conditions[] = "price >= ?";
$params[] = $_GET['price_min'];
$types .= "d";
}
$where = !empty($conditions) ? "WHERE " . implode(" AND ", $conditions) : "";
$sql = "SELECT * FROM products $where";
$stmt = $conn->prepare($sql);
call_user_func_array([$stmt, 'bind_param'], array_merge([$types], $params));
使用Elasticsearch实现高级搜索
对于更复杂的搜索需求,可以集成Elasticsearch:
require 'vendor/autoload.php';
$client = Elasticsearch\ClientBuilder::create()->build();
$params = [
'index' => 'products',
'body' => [
'query' => [
'multi_match' => [
'query' => $searchTerm,
'fields' => ['name^3', 'description']
]
]
]
];
$response = $client->search($params);
前端搜索表单示例
HTML表单部分:
<form method="get" action="search.php">
<input type="text" name="search" placeholder="输入搜索关键词">
<input type="number" name="price_min" placeholder="最低价格">
<input type="number" name="price_max" placeholder="最高价格">
<button type="submit">搜索</button>
</form>
结果显示处理
处理并显示搜索结果:
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<div class='result-item'>";
echo "<h3>" . htmlspecialchars($row['name']) . "</h3>";
echo "<p>" . htmlspecialchars($row['description']) . "</p>";
echo "</div>";
}
} else {
echo "没有找到匹配的结果";
}
这些方法可以根据具体需求进行组合和调整,实现从简单到复杂的各种检索功能。






