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

Filtraggio di ricerca con PHP/MySQL

Come tutti gli altri post, dovrai aggiungere tutte le condizioni con AND in questo modo. Questa è la risposta più pulita finora. Ricorda di sfuggire alle tue stringhe anche se usa il modo mysqli OOP invece del vecchio mysql. Solo un suggerimento.

Ecco un esempio di una query tipica.

Il modo corretto:

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

Il modo in cui lo stai facendo

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

Codice:

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;
}