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

Vyhledávání kritérií založené na TextField a nabídce Seznam

Ve vaší klauzuli where je něco divného.

Pokud otestujete:(A AND B) NEBO (A OR B)

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

POKUD platí A, pak není nutné, aby bylo b pravdivé. A to vysvětluje, že váš třetí příklad nefunguje. Myslím, že byste měli otestovat svou hodnotu a vytvořit správnou klauzuli WHERE na základě vašeho vysvětlení.

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. Jak pracovat s databázemi PostgreSQL

  2. Rychle vložte 2 miliony řádků do SQL Serveru

  3. Další důvod, proč se vyhnout sp_updatestats

  4. Ekvivalent data a času v java.sql? (existuje java.sql.datetime?)