sql >> Databasteknik >  >> RDS >> Mysql

Kriteriesökning baserat på TextField och en listmeny

Det är något konstigt i din var-klausul.

Om du testar:(A OCH B) ELLER (A ELLER B)

A => a.establishment_name LIKE '".$search_value."'
B => a.location_id = '".$location_search_value."'

OM A är sant, så finns det inget behov av att b är sant. Och detta förklarar att ditt tredje exempel inte fungerar. Jag tycker att du ska testa ditt värde och skapa den korrekta WHERE-satsen baserat på din förklaring.

if($search_value != "" && $location_search_value == "") {
    $where = "a.establishment_name LIKE '".$search_value."'";
} else if ($search_value == "" && $location_search_value != "") {
    $where = "a.location_id = '".$location_search_value."'";
} else {
    $where = "(a.establishment_name LIKE '".$search_value."' AND a.location_id = '".$location_search_value."')";
}
$query = "SELECT a.*, b.location_name ".
         "FROM establishment a ".
         "JOIN location b ON a.location_id = b.location_id ".
         "WHERE ".$where; 


  1. PHP PDO-initiering misslyckas på grund av dubbelport - Uncatught PDOException:SQLSTATE[HY000] [2002]

  2. MySQL infoga rad på dubblettnyckel uppdatera flera kolumner

  3. TRANSLATE(… ANVÄNDER) Funktion i Oracle

  4. PHP-visningsbild BLOB från MySQL