答案:通过HTML表单提交关键词,PHP使用PDO预处理语句对MySQL商品表执行模糊查询,结合LIKE或FULLTEXT索引实现安全高效的商品搜索,并展示匹配结果。

在PHP项目中实现商品搜索功能,核心是结合前端表单与后端数据库查询。以MySQL为例,通过用户输入关键词,动态构造SQL语句,从商品表中筛选匹配数据。下面是一个实用的商品搜索案例,涵盖HTML表单、PHP处理逻辑和安全建议。
创建表的SQL示例:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10,2),
description TEXT,
category VARCHAR(100)
);
<form method="GET" action="search.php">
<input type="text" name="keyword" placeholder="请输入商品名称或描述..." required>
<button type="submit">搜索</button>
</form>
<?php
$host = 'localhost';
$db = 'shop_db';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';
<p>$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];</p><p>try {
$pdo = new PDO($dsn, $user, $pass, $options);
} catch ($e) {
die("数据库连接失败: " . $e->getMessage());
}</p><p>// 获取搜索关键词
$keyword = trim($_GET['keyword'] ?? '');</p><p>if (!$keyword) {
echo "请输入搜索关键词。";
exit;
}</p><p>// 使用LIKE进行模糊匹配,支持名称和描述
$sql = "SELECT id, name, price, description, category
FROM products
WHERE name LIKE ? OR description LIKE ?";
$stmt = $pdo->prepare($sql);
$searchTerm = "%$keyword%";
$stmt->execute([$searchTerm, $searchTerm]);
$results = $stmt->fetchAll();</p><p>if ($results):
?>
<h3>搜索结果:</h3>
<ul>
<?php foreach ($results as $row): ?>
<li>
<strong>${row['name']}</strong> </p><ul><li>¥${row['price']}
(${row['category']})<br>
${row['description']}
</li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<p>未找到相关商品。</p>
<?php endif; ?>例如添加全文索引:
ALTER TABLE products ADD FULLTEXT(name, description);
然后改用 MATCH...AGAINST 提高搜索精度:
立即学习“PHP免费学习笔记(深入)”;
$sql = "SELECT * FROM products WHERE MATCH(name, description) AGAINST (? IN NATURAL LANGUAGE MODE)";
基本上就这些。一个基础但完整的PHP商品搜索功能,关键在于表单交互、数据库查询和安全性把控。根据需求逐步扩展即可。
以上就是php数据库如何构建搜索功能 php数据库商品搜索的实现案例的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号