Esportare con PHP una tabella MySQL in formato CSV

Avendo la necessità di  esportare una tabella MySQL in fomato CSV (Comma-Separated Values), il procedimento più utilizzato è quello di accedere al pannello di phpMyAdmin, selezionare la tabella e procedere con i passaggi  Esporta->Formato->CSV.

csv_mysql

In alcuni casi capita però di aver bisogno di esportare i dati in formato CSV dinamicamente attraverso PHP, e nulla di più facile, farlo con un semplice script  e con pochissime righe di codice.

Vediamo un semplice esempio :

<?php
$host="localhost";
$user="root";
$pass="";
$db_name="name_db";
$table="tablename";
$conn = mysqli_connect($host,$user,$pass,$db_name) or die("Errore connessione");

$query = "SELECT * FROM $table ORDER BY ID";
$result = mysqli_query($conn,$query) or die("Errore della query");
if(mysqli_num_rows($result)>0)
{
$csv = "";

$row = mysqli_fetch_assoc($result);

$delim = "";
//recupero i nomi dei campi che oocuperanno la prima riga del csv
foreach($row as $k => $v)
{
$csv .= $delim . '"' . str_replace('"', '""', $k) . '"';
$delim= ";";
}
$csv .= "\n";

//recupero i valori dei campi
while($row = mysqli_fetch_assoc($result))
{

$delim = "";
foreach($row as $v)
{
$csv .= $delim . '"' . str_replace('"', '""', $v) . '"';
$delim = ";";
}
$csv .= "\n";

}
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=".$table.".csv");
echo $csv;
exit;
}
else
{
echo "Nessun record presente";
}

?>

Lascia un commento