sql >> Database teknologi >  >> RDS >> Mysql

Kombination af feltsøgning ved hjælp af PHP &MYSQL

I stedet for alle de betingelser om, hvorvidt AND skal tilføjes Når du sammenkæder til forespørgslen, skal du bruge et array og implode .

$fields = array('sport' => 'sport',
                'gender' => 'gender', 
                'fname' => 'firstName',
                'lname' => 'lastName',
                'country' => 'country');
$wheres = array();
foreach ($fields as $postfield => $dbfield) {
    if ($_POST[$postfield] != 'showAll') {
        $wheres[] = "$dbfield = '" . mysql_real_escape_string($_POST[$postfield]) . "'";
    }
}
$selectString = "SELECT t2ath.lastName, t2ath.firstName, t2ath.image, t2ath.sport, t2ath.gender, t2ath.country, t2country.flag 
                 FROM t2ath LEFT JOIN t2country
                 ON t2ath.country = t2country.name";
if (count($wheres) > 0) {
    $selectString .= " WHERE " . implode(" AND ", $wheres);
}
$result = mysql_query($selectString);

For at se, hvordan du gør det på samme måde ved hjælp af PDO-forberedte erklæringer, se mit svar her:Hvilken kodetilgang ville lade brugere anvende tre valgfrie variabler i PHP/MySQL?



  1. Er det muligt at sende en variabel til et lagret procedurekald i mysql?

  2. Hvordan kan jeg ændre databasekodning for en PostgreSQL-database ved hjælp af sql eller phpPgAdmin?

  3. #1273 - Ukendt sortering:'utf8mb4_unicode_ci' cPanel

  4. Sådan fungerer REGEX_REPLACE()-funktionen i MySQL