php select实现界面
PHP 实现 SELECT 查询界面
使用 PHP 和 MySQL 实现 SELECT 查询界面需要结合前端表单和后端数据库操作。以下是实现方法:
前端表单设计 创建一个 HTML 表单,允许用户输入查询条件或选择查询选项:
<form method="POST" action="query.php">
<label for="search">搜索条件:</label>
<input type="text" id="search" name="search">
<label for="category">分类:</label>
<select id="category" name="category">
<option value="">全部</option>
<option value="1">分类1</option>
<option value="2">分类2</option>
</select>
<button type="submit">查询</button>
</form>
后端 PHP 处理 在 query.php 中处理表单提交并执行数据库查询:
<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 获取表单数据
$search = isset($_POST['search']) ? $_POST['search'] : '';
$category = isset($_POST['category']) ? $_POST['category'] : '';
// 构建查询语句
$sql = "SELECT * FROM products WHERE 1=1";
if (!empty($search)) {
$sql .= " AND name LIKE '%" . $conn->real_escape_string($search) . "%'";
}
if (!empty($category)) {
$sql .= " AND category_id = " . (int)$category;
}
// 执行查询
$result = $conn->query($sql);
// 显示结果
if ($result->num_rows > 0) {
echo "<table border='1'>";
echo "<tr><th>ID</th><th>名称</th><th>分类</th></tr>";
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . htmlspecialchars($row['id']) . "</td>";
echo "<td>" . htmlspecialchars($row['name']) . "</td>";
echo "<td>" . htmlspecialchars($row['category_id']) . "</td>";
echo "</tr>";
}
echo "</table>";
} else {
echo "没有找到匹配的记录";
}
$conn->close();
?>
安全注意事项
防止 SQL 注入 使用预处理语句代替直接拼接 SQL:

$stmt = $conn->prepare("SELECT * FROM products WHERE name LIKE ? AND category_id = ?");
$searchParam = "%$search%";
$stmt->bind_param("si", $searchParam, $category);
$stmt->execute();
$result = $stmt->get_result();
输出转义 使用 htmlspecialchars() 函数防止 XSS 攻击:
echo htmlspecialchars($row['name'], ENT_QUOTES, 'UTF-8');
分页实现
添加分页功能 修改查询语句添加 LIMIT 子句:

$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10;
$offset = ($page - 1) * $perPage;
$sql = "SELECT * FROM products LIMIT $offset, $perPage";
生成分页链接 计算总页数并生成导航:
$totalResult = $conn->query("SELECT COUNT(*) FROM products")->fetch_row()[0];
$totalPages = ceil($totalResult / $perPage);
for ($i = 1; $i <= $totalPages; $i++) {
echo "<a href='?page=$i'>$i</a> ";
}
高级查询功能
多条件查询 添加更多查询字段到表单:
<input type="date" name="start_date">
<input type="date" name="end_date">
动态排序 允许用户选择排序方式:
$orderBy = isset($_GET['order']) ? $_GET['order'] : 'id';
$allowedOrders = ['id', 'name', 'price'];
if (!in_array($orderBy, $allowedOrders)) {
$orderBy = 'id';
}
$sql .= " ORDER BY $orderBy";
这些方法提供了完整的 SELECT 查询界面实现,包括基本查询、安全防护、分页和高级查询功能。






