php实现新闻查找
使用PHP实现新闻查找功能
通过PHP结合数据库查询可以实现新闻查找功能,以下是具体实现方法:
数据库准备
创建新闻表结构,包含标题、内容、发布时间等字段:
CREATE TABLE news (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT,
publish_time DATETIME,
category VARCHAR(50)
);
基础关键词搜索
使用LIKE语句实现简单搜索:
$keyword = $_GET['keyword'];
$sql = "SELECT * FROM news WHERE title LIKE '%$keyword%' OR content LIKE '%$keyword%'";
$result = $conn->query($sql);
高级搜索功能
添加分类筛选和时间范围查询:
$category = $_GET['category'];
$startDate = $_GET['start_date'];
$endDate = $_GET['end_date'];
$sql = "SELECT * FROM news WHERE 1=1";
if(!empty($keyword)) {
$sql .= " AND (title LIKE '%$keyword%' OR content LIKE '%$keyword%')";
}
if(!empty($category)) {
$sql .= " AND category = '$category'";
}
if(!empty($startDate) && !empty($endDate)) {
$sql .= " AND publish_time BETWEEN '$startDate' AND '$endDate'";
}
分页处理
添加LIMIT实现分页:
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10;
$offset = ($page - 1) * $perPage;
$sql .= " LIMIT $offset, $perPage";
搜索结果展示
在HTML中循环显示搜索结果:
while($row = $result->fetch_assoc()) {
echo "<div class='news-item'>";
echo "<h3>{$row['title']}</h3>";
echo "<p>{$row['content']}</p>";
echo "<span class='date'>{$row['publish_time']}</span>";
echo "</div>";
}
安全优化
使用预处理语句防止SQL注入:
$stmt = $conn->prepare("SELECT * FROM news WHERE title LIKE ? OR content LIKE ?");
$searchTerm = "%$keyword%";
$stmt->bind_param("ss", $searchTerm, $searchTerm);
$stmt->execute();
$result = $stmt->get_result();
全文索引优化
对于大型新闻系统,建议在MySQL中创建全文索引:
ALTER TABLE news ADD FULLTEXT(title, content);
使用MATCH AGAINST进行更高效的搜索:
$sql = "SELECT * FROM news WHERE MATCH(title, content) AGAINST('$keyword')";
以上方法可根据实际需求组合使用,构建完整的新闻查找功能。对于更复杂的搜索需求,可以考虑集成Elasticsearch等专业搜索引擎。







