Problem:
Sie haben ein Suchformular, das Benutzern erlaubt um mehrere Suchparameter einzugeben, z. B. Studentenausweis, Name, Hauptfach oder Hochschule. Sie möchten in der Lage sein, mithilfe einer beliebigen Kombination dieser Parameter nach Schülern zu suchen.
Antwort:
Um die Suche mit mehreren Parametern zu ermöglichen, erstellen Sie die SQL-WHERE-Klausel dynamisch auf den von der eingegebenen Parametern Benutzer.
Lösung:
Verwenden Sie PHPs PDO (bevorzugte Methode):
$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);
Vorhandenes MySQLi ändern Ansatz:
$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);
Das obige ist der detaillierte Inhalt vonWie erstelle ich ein Suchformular mit mehreren Suchparametern in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!