Masalah:
Anda mempunyai borang carian yang membenarkan pengguna untuk memasukkan berbilang parameter carian, seperti ID pelajar, nama, jurusan atau kolej. Anda mahu dapat mencari pelajar menggunakan mana-mana gabungan parameter ini.
Jawapan:
Untuk mendayakan carian dengan berbilang parameter, bina secara dinamik klausa SQL WHERE berdasarkan pada parameter yang dimasukkan oleh pengguna.
Penyelesaian:
Gunakan PDO PHP (Kaedah Pilihan):
$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);
Ubah suai Pendekatan MySQLi Sedia Ada:
$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);
Atas ialah kandungan terperinci Bagaimana untuk Membina Borang Carian dengan Pelbagai Parameter Carian dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!