Stejně jako všechny ostatní příspěvky budete muset připojit všechny podmínky pomocí AND. Toto je zatím nejčistší odpověď. Nezapomeňte, že vaše řetězce skutečně unikají, ale místo starého mysql použijte způsob OOP mysqli. Jen návrh.
Zde je příklad typického dotazu.
Správný způsob:
SELECT * FROM donar WHERE name='dxenaretionx' AND sex='M';
Způsob, jakým to děláte
SELECT * FROM donar WHERE name='dxenaretionx' sex='M';
Kód:
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;
}