Uvoz podatkov iz CSV datotek v bazo je ena najpogostejših nalog pri upravljanju spletnih aplikacij, blogov ali trgovin. Čeprav lahko uporabimo phpMyAdmin, nam lasten PHP skript omogoča avtomatizacijo in boljšo kontrolo nad podatki.
Logika postopka
Skript deluje v nekaj preprostih korakih:
- Povezava: Vzpostavimo stik z MySQL strežnikom preko razreda
mysqli. - Branje: S funkcijo
fgetcsv()beremo datoteko vrstico po vrstico. - Varnost: Uporabimo pripravljene poizvedbe (Prepared Statements), ki poskrbijo, da so posebni znaki v podatkih varno shranjeni.
Izboljšana koda (Priporočljivo)
Spodnja različica uporablja varnostne protokole, ki preprečujejo SQL injekcijo in hitreje obdelujejo velike datoteke.
<?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);
}
$csvFile = 'podatki.csv';
// Preveri, ali datoteka obstaja
if (!file_exists($csvFile)) {
die("Napaka: CSV datoteka ne obstaja.");
}
// Odpri CSV datoteko za branje
if (($handle = fopen($csvFile, "r")) !== FALSE) {
// Preskoči prvo vrstico (glava z imeni stolpcev)
fgetcsv($handle, 10000, ",");
// Pripravi poizvedbo (Prepared Statement)
$stmt = $povezava->prepare("INSERT INTO imena (ime, povezava) VALUES (?, ?)");
// Preberi vsako vrstico CSV datoteke
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE) {
$ime = $data[0];
$povezava_pot = $data[1];
// Poveži parametre in izvedi
$stmt->bind_param("ss", $ime, $povezava_pot);
if (!$stmt->execute()) {
echo "Napaka pri vrstici: " . $stmt->error . "<br>";
}
}
$stmt->close();
fclose($handle);
}
$povezava->close();
echo "Uvoz uspešno končan.";
?>