php实现检索
PHP实现检索功能
在PHP中实现检索功能通常涉及数据库查询、表单处理和结果展示。以下是几种常见方法:
数据库查询检索 使用MySQLi或PDO与数据库交互,执行SQL查询获取匹配结果:
$searchTerm = $_GET['search'];
$conn = new mysqli("localhost", "username", "password", "database");
$stmt = $conn->prepare("SELECT * FROM products WHERE name LIKE ?");
$searchTerm = "%$searchTerm%";
$stmt->bind_param("s", $searchTerm);
$stmt->execute();
$result = $stmt->get_result();
全文检索实现 对于更复杂的搜索需求,可使用MySQL的全文索引:
ALTER TABLE articles ADD FULLTEXT(title, content);
PHP查询代码:

$query = "SELECT * FROM articles WHERE MATCH(title, content) AGAINST(?)";
$stmt = $conn->prepare($query);
$stmt->bind_param("s", $searchTerm);
Elasticsearch集成 对于大型数据集,可集成Elasticsearch实现高性能检索:
require 'vendor/autoload.php';
$client = Elasticsearch\ClientBuilder::create()->build();
$params = [
'index' => 'my_index',
'body' => [
'query' => [
'match' => [
'title' => $searchTerm
]
]
]
];
$response = $client->search($params);
前端搜索表单 创建HTML表单接收用户输入:

<form method="GET" action="search.php">
<input type="text" name="search" placeholder="输入关键词...">
<button type="submit">搜索</button>
</form>
结果分页处理 实现搜索结果分页:
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
$query = "SELECT * FROM products WHERE name LIKE ? LIMIT $perPage OFFSET $offset";
安全注意事项 防止SQL注入,始终使用预处理语句:
$stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
高级搜索功能 实现多条件搜索:
$conditions = [];
$params = [];
if (!empty($_GET['keyword'])) {
$conditions[] = "title LIKE ?";
$params[] = "%".$_GET['keyword']."%";
}
if (!empty($_GET['category'])) {
$conditions[] = "category_id = ?";
$params[] = $_GET['category'];
}
$where = !empty($conditions) ? "WHERE ".implode(" AND ", $conditions) : "";
$query = "SELECT * FROM products $where";






