V prejšnji objavi smo pogledali, kako podatke uvoziti, zdaj pa bomo naredili obratno. Izvoz podatkov iz MySQL v CSV je izjemno uporaben za izdelavo varnostnih kopij, poročil ali prenos podatkov med različnimi aplikacijami.
Logika postopka
- Poizvedba: Najprej z
SELECTstavkom pridobimo želene podatke iz tabele. - Headers: Brskalniku moramo poslati ustrezne glave (headers), da bo datoteko prepoznal kot CSV in jo ponudil za prenos (download).
- Zapisovanje: Podatke iz baze pišemo neposredno v izhodni tok (output stream) s pomočjo funkcije
fputcsv().
Primer kode za neposreden prenos
Ta skript bo ob zagonu v brskalniku takoj ponudil datoteko izvoz.csv za prenos.
<?php
$streznik = "localhost";
$uporabnik = "root";
$geslo = "";
$baza_podatkov = "ime_tvoje_baze";
// Ustvari povezavo
$povezava = new mysqli($streznik, $uporabnik, $geslo, $baza_podatkov);
// Preveri povezavo
if ($povezava->connect_error) {
die("Povezava ni uspela: " . $povezava->connect_error);
}
// Nastavi ime datoteke in glave za prenos
$filename = "izvoz_podatkov_" . date('Y-m-d') . ".csv";
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=' . $filename);
// Odpri izhodni tok (output stream)
$output = fopen('php://output', 'w');
// Zapiši naslove stolpcev
fputcsv($output, ['ID', 'Ime', 'Povezava']);
// Pridobi podatke iz baze
$sql = "SELECT id, ime, povezava FROM imena ORDER BY id ASC";
$result = $povezava->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
fputcsv($output, $row);
}
}
fclose($output);
$povezava->close();
exit();
?>