hmm.. kapiram da je ova funkcija ok, ali ne vidim zasto tolika komplikacija.
pre svega -> napravi sopstveni bekap, znaci ti sam kreiras fajl na serveru, red po red. i sto kaze mVeliki - svakako je jedan red u bazi == jedan red u fajlu, odvojen zarezima ili nekim drugim delimiterom (npr. moze da se desi (99%) da u nekim unosima ima i zapetu, pa ce to dovesti do problema. umesto toga, kao "splitter" koristi neku specificnu kombinaciju karaketara, recimo "#@#", za razdvajanje polja. evo ajde ja cu sada da ti napisem skriptu na brzaka, lakse mi je tako nego da objasnjavam
1) skripta za export jedne tabele, primer
Code:
<?php
$query = "SELECT user_id, username, pass FROM users";
$result = mysql_query($query) or die(mysql_error() .'<BR>');
$handle = fopen("users.txt", "w");
// pripremam svoje specificne parametre za fajl
$delimiter = "#@#"; // specifican niz karaktera, i ovako cu UVEK lako i verodostojno moci da prelomim svoju liniju iz fajla u "polja" iz baze
$eol = "\r\n"; // end-of-line. ako si pod windowsom -> treba ti "\r\n", a ako si pod unixom -> treba ti samo "\n";
// idem red po red iz baze
while ($row = mysql_fetch_array($result))
{
// spremamo podatke za upis u fajl
$id = $row['user_id'];
$username = $row['username'];
$pass = $row['pass'];
// pravim liniju koju cu da upisem u fajl
$line = $id .$delimiter. $username .$delimiter. $pass .$eol;
// pisem liniju u fajl
fwrite($handle, $line);
}
// zatvaram fajl
fclose($handle);
?>
2) sada posto imam izgenerisan fajl sa svim podacima iz baze, samo trebam da protrcim kroz njega i da upisujem sve iz njega u bazu. simple. idemo:
Code:
<?php
// otvaram fajl sa podacima iz baze, ali read-only;
$handle = fopen("users.txt", "r");
// pripremam specifican parametar, isti kao i u gornjem kodu, naravno
$delimiter = "#@#";
while (!feof($handle))
{
// citam liniju po liniju
$line = fgets($handle);
// prazne linije nas ne zanimaju
if (strlen($line) <= 0) continue;
// ako sam stigao dovde -> znaci da imam liniju koja mi treba. prvo je parsiram
$tmp = explode($delimiter, $line);
// spremam podatke
$id = $tmp[0];
$user = $tmp[1];
$pass = $tmp[2];
// pravim sql upit
$query = "INSERT INTO users (user_id, username, pass) VALUES ($id, '$user', '$pass')";
// i evo ga konacno poslednji korak -> upucavam liniju po liniju, iz fajla u bazu na ovaj nacin.
mysql_query($query) or die(mysql_error());
}
// zatvaram fajl, zavrsio sam sa citanjem.
fclose($handle);
?>
i eto.
to je sve, zaista.
naravno ubaci negde u skriptu i db_connect, izregulisi sve sto treba, i ovo nisam kompajlovao, pa nemoj da se istripujes ako ti baci neki error, najverovatnije ce da bude zapeta ili sl, ali ako te bas bude mucilo -> baci ovde problem, pa cu da vidim sta je
eto, nadam se da je ovo pomoglo.
zaista ne vidim laksi nacin od ovoga, osim da koristis neke klase sa neta, ali to nikada ne valja, jer ne mozes da udjes u logiku uvek tako lako.
poz,
dootzky