Problème :
Vous disposez d'un formulaire de recherche qui permet aux utilisateurs pour saisir plusieurs paramètres de recherche, tels que la carte d'étudiant, le nom, la spécialité ou l'université. Vous souhaitez pouvoir rechercher des étudiants en utilisant n'importe quelle combinaison de ces paramètres.
Réponse :
Pour activer la recherche avec plusieurs paramètres, créez dynamiquement la clause SQL WHERE basée sur les paramètres saisis par le utilisateur.
Solution :
Utiliser le PDO de PHP (méthode préférée) :
$wheres = []; $params = []; 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'].'%'; } // ...continue for additional parameters $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);
Modifier MySQLi existant Approche :
$sql = "SELECT * FROM user_details a, user b WHERE a.uid = b.id"; if (!empty($_GET['id'])) { $sql .= " AND a.uid = '" . $_GET['id'] . "'"; } if (!empty($_GET['major'])) { $sql .= " AND a.major = '" . $_GET['major'] . "'"; } if (!empty($_GET['name'])) { $sql .= " AND b.name LIKE '%" . $_GET['name'] . "%'"; } // ...continue for additional parameters $result = mysqli_query($db, $sql);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!