sql >> Base de Datos >  >> RDS >> Mysql

Filtrado de búsqueda con PHP/MySQL

Al igual que todas las otras publicaciones, deberá agregar todas las condiciones con Y así. Esta es la respuesta más limpia hasta ahora. Recuerde escapar realmente de sus cadenas, aunque use la forma mysqli OOP en lugar del antiguo mysql. Solo una sugerencia.

Este es un ejemplo de una consulta típica.

La forma correcta:

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

La forma en que lo estás haciendo

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

Código:

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