sql >> Databáze >  >> RDS >> Mysql

Filtrování vyhledávání pomocí PHP/MySQL

Stejně jako všechny ostatní příspěvky budete muset připojit všechny podmínky pomocí AND. Toto je zatím nejčistší odpověď. Nezapomeňte, že vaše řetězce skutečně unikají, ale místo starého mysql použijte způsob OOP mysqli. Jen návrh.

Zde je příklad typického dotazu.

Správný způsob:

SELECT * FROM donar WHERE name='dxenaretionx' AND sex='M';

Způsob, jakým to děláte

SELECT * FROM donar WHERE name='dxenaretionx' sex='M';

Kód:

function search_donar($_POST) {
    $by_name = $_POST['by_name'];
    $by_sex = $_POST['by_sex'];
    $by_group = $_POST['by_group'];
    $by_level = $_POST['by_level'];

    //Do real escaping here

    $query = "SELECT * FROM donar";
    $conditions = array();

    if(! empty($by_name)) {
      $conditions[] = "name='$by_name'";
    }
    if(! empty($by_sex)) {
      $conditions[] = "sex='$by_sex'";
    }
    if(! empty($by_group)) {
      $conditions[] = "blood_group='$by_group'";
    }
    if(! empty($by_level)) {
      $conditions[] = "e_level='$by_level'";
    }

    $sql = $query;
    if (count($conditions) > 0) {
      $sql .= " WHERE " . implode(' AND ', $conditions);
    }

    $result = mysql_query($sql);

    return $result;
}


  1. Chyba v MySQL při nastavování výchozí hodnoty pro DATE nebo DATETIME

  2. SQL kurz pro začátečníky

  3. Limitní rozsah MySQL

  4. Efektivní ukládání obrázků nahraných uživatelem do systému souborů