Có điều gì đó kỳ lạ trong mệnh đề where của bạn.
Nếu bạn kiểm tra:(A VÀ B) HOẶC (A HOẶC B)
A => a.establishment_name LIKE '".$search_value."'
B => a.location_id = '".$location_search_value."'
NẾU A đúng, thì không cần b đúng. Và điều này giải thích ví dụ thứ ba của bạn không hoạt động. Tôi nghĩ bạn nên kiểm tra giá trị của mình và tạo mệnh đề WHERE chính xác dựa trên lời giải thích của bạn.
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;