No ogni valore dell'array $fields rappresenta un campo (colonna del file csv)

es.:
Supponiamo che la variabile $array contenga i valori di una tabella del tuo db.
Codice PHP:
$array = array (
    
"riga 1" => array (
        
'campo 1' => "valore campo 1"
        
'campo 2' => "valore campo 2"
        
'campo 3' => "valore campo 3"
        
'campo 4' => "valore campo 4"
        
'campo 5' => "valore campo 5" ), 
    
"riga 2" => array (
        
'campo 1' => "valore campo 1"
        
'campo 2' => "valore campo 2"
        
'campo 3' => "valore campo 3"
        
'campo 4' => "valore campo 4"
        
'campo 5' => "valore campo 5" ), 
    
"riga 3" => array (
        
'campo 1' => "valore campo 1"
        
'campo 2' => "valore campo 2"
        
'campo 3' => "valore campo 3"
        
'campo 4' => "valore campo 4"
        
'campo 5' => "valore campo 5" ), 
    
"riga 4" => array (
        
'campo 1' => "valore campo 1"
        
'campo 2' => "valore campo 2"
        
'campo 3' => "valore campo 3"
        
'campo 4' => "valore campo 4"
        
'campo 5' => "valore campo 5" ) );
$filefopen("file.csv","x");
foreach (
$array as $array) {
    
fputcsv($file,$array,";");
}
fclose($file);