php实现搜索检索实现
实现搜索检索功能
在PHP中实现搜索检索功能通常涉及数据库查询、关键词处理和结果展示。以下是几种常见的方法:
使用SQL的LIKE语句进行模糊匹配
$keyword = $_GET['keyword'];
$sql = "SELECT * FROM articles WHERE title LIKE '%$keyword%' OR content LIKE '%$keyword%'";
$result = mysqli_query($conn, $sql);
使用全文索引提高搜索效率
// 创建全文索引
ALTER TABLE articles ADD FULLTEXT(title, content);
// 查询语句
$sql = "SELECT * FROM articles WHERE MATCH(title, content) AGAINST('$keyword')";
高级搜索功能实现
多条件组合搜索
$title = $_GET['title'];
$author = $_GET['author'];
$date = $_GET['date'];
$sql = "SELECT * FROM articles WHERE 1=1";
if(!empty($title)) {
$sql .= " AND title LIKE '%$title%'";
}
if(!empty($author)) {
$sql .= " AND author = '$author'";
}
分页处理搜索结果
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10;
$start = ($page - 1) * $perPage;
$sql = "SELECT * FROM articles WHERE title LIKE '%$keyword%' LIMIT $start, $perPage";
搜索优化技巧
预处理搜索关键词
$keyword = trim($_GET['keyword']);
$keyword = mysqli_real_escape_string($conn, $keyword);
$keywords = explode(' ', $keyword);
使用AJAX实现实时搜索
// 前端代码
$('#search-input').on('keyup', function(){
$.post('search.php', {keyword: $(this).val()}, function(data){
$('#results').html(data);
});
});
搜索结果高亮显示
function highlight($text, $words) {
foreach($words as $word) {
$text = preg_replace("/($word)/i", "<span class='highlight'>$1</span>", $text);
}
return $text;
}
安全注意事项
防止SQL注入
$keyword = mysqli_real_escape_string($conn, $_GET['keyword']);
// 或使用预处理语句
$stmt = $conn->prepare("SELECT * FROM articles WHERE title LIKE ?");
$searchTerm = "%$keyword%";
$stmt->bind_param("s", $searchTerm);
限制搜索频率

session_start();
if(isset($_SESSION['last_search']) && time() - $_SESSION['last_search'] < 2) {
die('搜索太频繁,请稍后再试');
}
$_SESSION['last_search'] = time();
这些方法可以根据具体需求组合使用,构建出功能完善、性能优越的搜索系统。对于大型网站,可以考虑使用专门的搜索引擎如Elasticsearch或Solr。






