Me ha costado un huevo, pero he llegado a esto:
    Código PHP:
     $sql="SELECT * FROM vinos";
 
 
$cond= "WHERE";
if($bodega !=0)
{
    $sql .="$cond bodega=$bodega";
    $cond="AND";
}
 
if($DO !=0)
{
      $sql .="$cond DO=$DO";
    $cond="AND";
}
if($tipo_vino !=0)
{
      $sql .="$cond tipo_vino=$tipo_vino";
    $cond="AND";
}
if($maridaje_gen !=0)
{
      $sql .="$cond maridaje_gen=$maridaje_gen";
    $cond="AND";
}
$sql.=";"; 
 
echo $sql; 
    
  Que por alguna extraña razón no me agrega los condicionales, como si los "if" no se cumplieran. $SQL = SELECT * FROM vinos; siempre. 
Se puede ver en 
Funcionamiento 
El código se puede ver 
aquí!