创建允许用户输入多个参数的搜索表单时,重要的是要考虑搜索结果将如何被过滤。
在提供的示例中,搜索表单具有单独的 ID、姓名、专业和大学输入字段。然后,results.php 文件使用单独的 if/elseif 语句分别处理每个参数。
但是,为了允许用户输入一个或多个参数,需要一种更动态的方法。这可以通过根据输入的参数动态构建 SQL 查询的 WHERE 子句来实现。
这里是 results.php 文件的修订版本,演示了这种方法:
<?php $wheres = array(); $params = array(); if (!empty($_GET['id'])) { $wheres[] = 'a.uid = :uid'; $params[':uid'] = $_GET['id']; } if (!empty($_GET['major'])) { $wheres[] = 'a.major = :major'; $params[':major'] = $_GET['major']; } if (!empty($_GET['name'])) { $wheres[] = 'b.name LIKE :name'; $params[':name'] = '%'.$_GET['name'].'%'; } $sql = "SELECT * FROM user_details AS a JOIN user AS b ON a.uid = b.id"; if (!empty($wheres)) { $sql .= " WHERE " . implode(' AND ', $wheres); } $stmt = $db->prepare($sql); $stmt->execute($params); while ($student = $stmt->fetch()) { echo ' <tr> <td>'.$student['uid'].'</td> <td>'.$student['name'].'</td> <td>'.$student['major'].'</td> <td>'.$student['college'].'</td> <td><a href="?m=profile&id='.$student['id'].'">
此代码根据输入的参数动态构建 WHERE 子句。如果用户仅输入名称,则查询将仅按名称过滤。如果用户同时输入姓名和专业,则查询将按这两个参数进行过滤。
这种方法可以提供更灵活和用户友好的搜索体验。
以上是如何在 PHP 中构建具有多个参数的动态搜索表单?的详细内容。更多信息请关注PHP中文网其他相关文章!