Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kriteriensuche basierend auf TextField und einem Listenmenü

In Ihrer where-Klausel ist etwas Seltsames.

Wenn Sie testen:(A UND B) ODER (A ODER B)

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

Wenn A wahr ist, dann muss b nicht wahr sein. Und dies erklärt, dass Ihr drittes Beispiel nicht funktioniert. Ich denke, Sie sollten Ihren Wert testen und basierend auf Ihrer Erklärung die richtige WHERE-Klausel erstellen.

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;