sql >> Databasteknik >  >> RDS >> Mysql

Sökfiltrering med PHP/MySQL

Som alla andra inlägg måste du lägga till alla villkor med OCH gilla så. Detta är det renaste svaret hittills. Kom ihåg att verkligen undkomma dina strängar men använd mysqli OOP-sättet istället för det gamla mysql. Bara ett förslag.

Här är ett exempel på en typisk fråga.

Rätt sätt:

SELECT * FROM donar WHERE name='dxenaretionx' AND sex='M';

Sättet du gör

SELECT * FROM donar WHERE name='dxenaretionx' sex='M';

Kod:

function search_donar($_POST) {
    $by_name = $_POST['by_name'];
    $by_sex = $_POST['by_sex'];
    $by_group = $_POST['by_group'];
    $by_level = $_POST['by_level'];

    //Do real escaping here

    $query = "SELECT * FROM donar";
    $conditions = array();

    if(! empty($by_name)) {
      $conditions[] = "name='$by_name'";
    }
    if(! empty($by_sex)) {
      $conditions[] = "sex='$by_sex'";
    }
    if(! empty($by_group)) {
      $conditions[] = "blood_group='$by_group'";
    }
    if(! empty($by_level)) {
      $conditions[] = "e_level='$by_level'";
    }

    $sql = $query;
    if (count($conditions) > 0) {
      $sql .= " WHERE " . implode(' AND ', $conditions);
    }

    $result = mysql_query($sql);

    return $result;
}


  1. Hur man använder STRCMP() för att jämföra 2 strängar i MySQL

  2. Statisk och dynamisk datamaskering i FieldShield

  3. Väljer du alla kolumner som börjar med XXX med hjälp av ett jokertecken?

  4. Hur man installerar MariaDB-databasen i Debian 10