在PHP中实现网站搜索功能通常涉及到以下几个基础概念:
以下是一个简单的PHP搜索功能的实现示例,使用MySQL数据库和LIKE语句进行模糊匹配:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 获取搜索关键字
$searchQuery = $_GET['q'];
// 构建SQL查询
$sql = "SELECT * FROM articles WHERE title LIKE '%$searchQuery%' OR content LIKE '%$searchQuery%'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
echo "标题: " . $row["title"]. " - 内容: " . $row["content"]. "<br>";
}
} else {
echo "没有找到结果";
}
$conn->close();
?>问题:当数据库中的数据量很大时,搜索功能可能会变得非常慢。
原因:LIKE语句在大数据量下效率低下。
解决方法:
ALTER TABLE articles ADD FULLTEXT(title, content);
SELECT * FROM articles WHERE MATCH(title, content) AGAINST('keyword');问题:SQL注入攻击。
原因:直接将用户输入拼接到SQL查询中。
解决方法:
$stmt = $conn->prepare("SELECT * FROM articles WHERE title LIKE ? OR content LIKE ?");
$searchQuery = "%".$searchQuery."%";
$stmt->bind_param("ss", $searchQuery, $searchQuery);
$stmt->execute();
$result = $stmt->get_result();通过以上方法,你可以实现一个基本的搜索功能,并根据需要进行优化和扩展。