Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membina Borang Carian dengan Pelbagai Parameter Carian dalam PHP?

Bagaimana untuk Membina Borang Carian dengan Pelbagai Parameter Carian dalam PHP?

Linda Hamilton
Linda Hamiltonasal
2024-12-17 02:08:23916semak imbas

How to Build a Search Form with Multiple Search Parameters in PHP?

Borang Carian dengan Satu atau Lebih (Berbilang) Parameter

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:

  1. Gunakan PDO PHP (Kaedah Pilihan):

    • Buat tatasusunan untuk menahan keadaan WHERE.
    • Lelaran melalui setiap carian parameter dan tambahkan keadaan WHERE yang sepadan pada tatasusunan.
    • Letupkan tatasusunan untuk mencipta klausa WHERE tunggal.
    • Sediakan dan laksanakan pernyataan PDO menggunakan klausa WHERE dan ikat parameter.
    $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);
  2. Ubah suai Pendekatan MySQLi Sedia Ada:

    • Semak setiap parameter yang tidak kosong dan tambahkan keadaan WHERE yang sepadan dengan pertanyaan SQL.
    • Gunakan DAN untuk menggabungkan syarat.
    $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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn