1.引言
在开发网站时,模糊查询功能非常常见,它可以让用户在输入不完整或拼写错误的关键字时,从数据库中返回正确的结果。PHP提供了多种方法来完成模糊查询,本文将介绍一种直观简便的方法来实现模糊查询功能。
2.实现方法
2.1 数据库准备
模糊查询需要使用数据库,本文使用MySQL数据库。下面是表的结构和数据。
CREATE TABLE IF NOT EXISTS `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`price` decimal(10,2) NOT NULL,
`description` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
INSERT INTO `product` (`id`, `name`, `price`, `description`) VALUES
(1, 'iPhone X', 999.00, 'The latest iPhone'),
(2, 'Samsung Galaxy S9', 739.00, 'The latest Samsung phone'),
(3, 'Google Pixel 2', 649.00, 'The latest Google phone'),
(4, 'Huawei Mate 10', 699.00, 'The latest Huawei phone');
2.2 页面准备
模糊查询是基于用户输入的关键字来查询数据库。因此需要一个包含输入框和查询按钮的页面。下面是简单的HTML代码。
2.3 PHP代码实现
下面是search.php的代码。首先通过GET方法获取用户输入的关键字。如果用户没有输入关键字,那么直接退出程序。否则,将关键字作为搜索条件构造SQL语句来查询数据库,并将查询结果输出到页面上。
<?php
if (!isset($_GET['keyword'])) {
exit("请输入关键字");
}
$keyword = $_GET['keyword'];
// 创建PDO对象
$db = new PDO('mysql:host=localhost;dbname=test', 'root', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 构造SQL语句
$sql = "SELECT * FROM product WHERE name LIKE :keyword OR description LIKE :keyword";
$stmt = $db->prepare($sql);
$stmt->bindValue(':keyword', '%' . $keyword . '%', PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 输出结果
foreach ($results as $row) {
echo '<h3>' . $row['name'] . '</h3>';
echo '<p>Price: ' . $row['price'] . '</p>';
echo '<p>Description: ' . $row['description'] . '</p>';
}
?>
3.实现效果
在浏览器中输入search.php,可以看到搜索页面。在输入框中输入关键字"latest",点击按钮进行查询,结果如下。
3.1 搜索页面
3.2 搜索结果
4.总结
本文介绍了一种简便的方法来实现模糊查询功能,包括数据库准备、页面准备和PHP代码实现。在实际开发中,还可以通过AJAX等技术来优化用户体验。由于本文没有对查询结果进行分页处理,对于大量查询结果的情况,需要考虑分页的实现。