hola,
a lo mejor podrías montar la consulta para cuando te suben un archivo, y concatenar la parte si han rellenado esos campos en el form (te medio pongo el codigo porque no sé tus variables)
Código PHP:
$consulta1="INSERT INTO descargas (name, description, ruta, tipo, size, categoria";
$consulta2="VALUES ('$nombre_archivo','$description', '".$_FILES['fichero']['name']."', '".$_FILES['fichero']['type']."', '".$_FILES['fichero']['size']."','$cat')";
if (isset(campos del 2 archivo)){
$consulta1.=" ,name2, ruta2");
$consulta2.=" ,'$nombre_archivo2','".$_FILES['fichero2']['name']."'");
}else{
$consulta1.=")"; //añadirle los parentesis finales
$consulta2.=")";
}
$query=$consulta1.$consulta2; //unes la consulta
Es probable que haya algun fallo, pero la idea es esa...
De todas formas, no estoy segura de si tu fallo es ese, pero por probar..