Wie bei allen anderen Posts müssen Sie alle Bedingungen mit UND so anhängen. Dies ist die bisher sauberste Antwort. Denken Sie daran, Ihre Zeichenfolgen wirklich zu entkommen, obwohl Sie den mysqli-OOP-Weg anstelle des alten mysql verwenden. Nur ein Vorschlag.
Hier ist ein Beispiel für eine typische Abfrage.
Der richtige Weg:
SELECT * FROM donar WHERE name='dxenaretionx' AND sex='M';
So wie du es machst
SELECT * FROM donar WHERE name='dxenaretionx' sex='M';
Code:
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;
}