php实现网站查询功能
实现数据库连接
在PHP中实现查询功能需要先建立数据库连接。使用PDO或MySQLi扩展连接MySQL数据库。PDO提供更好的跨数据库兼容性,MySQLi专为MySQL优化。
// PDO连接示例
$host = 'localhost';
$dbname = 'database_name';
$username = 'username';
$password = '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());
}
创建查询表单
设计前端查询表单,包含输入字段和提交按钮。表单应使用GET或POST方法将数据发送到服务器。
<form action="search.php" method="get">
<input type="text" name="search_term" placeholder="输入查询内容">
<button type="submit">搜索</button>
</form>
处理查询请求
在服务器端接收并处理查询请求。对用户输入进行安全过滤,防止SQL注入攻击。
if(isset($_GET['search_term'])) {
$searchTerm = trim($_GET['search_term']);
$searchTerm = htmlspecialchars($searchTerm);
// 准备查询语句
$stmt = $pdo->prepare("SELECT * FROM products WHERE name LIKE :search OR description LIKE :search");
$stmt->bindValue(':search', '%'.$searchTerm.'%');
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
显示查询结果
将查询结果以清晰的方式展示给用户。可以设计表格或卡片布局显示数据。
if(!empty($results)) {
echo '<h3>搜索结果</h3>';
echo '<ul>';
foreach($results as $row) {
echo '<li>'.$row['name'].' - '.$row['description'].'</li>';
}
echo '</ul>';
} else {
echo '没有找到匹配的结果';
}
实现分页功能
对于大量查询结果,添加分页功能提升用户体验。计算总页数并限制每页显示数量。
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
$totalQuery = $pdo->query("SELECT COUNT(*) FROM products WHERE name LIKE '%$searchTerm%'");
$total = $totalQuery->fetchColumn();
$totalPages = ceil($total / $perPage);
$stmt = $pdo->prepare("SELECT * FROM products WHERE name LIKE :search LIMIT :offset, :perPage");
$stmt->bindValue(':search', '%'.$searchTerm.'%');
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
添加高级搜索选项
扩展基本搜索功能,提供多条件筛选选项。可以添加分类、价格范围等过滤条件。
<form action="advanced_search.php" method="get">
<input type="text" name="keyword" placeholder="关键词">
<select name="category">
<option value="">所有分类</option>
<option value="1">电子产品</option>
<option value="2">服装</option>
</select>
<input type="number" name="min_price" placeholder="最低价格">
<input type="number" name="max_price" placeholder="最高价格">
<button type="submit">高级搜索</button>
</form>
优化查询性能
对大型数据库查询进行性能优化。添加索引、使用EXPLAIN分析查询、考虑缓存常用查询结果。
-- 为常用搜索字段添加索引
CREATE INDEX idx_product_name ON products(name);
CREATE INDEX idx_product_category ON products(category_id);
实现自动完成功能
使用AJAX技术实现搜索框的自动完成功能,提升用户体验。

// jQuery示例
$('#search_input').on('input', function() {
$.get('autocomplete.php', {term: $(this).val()}, function(data) {
// 显示自动完成建议
});
});






