ugrás a tartalomhoz

mysql adatbázis kilistázása phpval

Qkac · 2007. Ápr. 6. (P), 15.20
Sziasztok! Biztos sokan használják a phpmyadmin export funkcióját.
Ez SQL-ként alkalmazva kiírja hogy milyen parancs kell a táblák létrehozásához.
Én ugyan ezt szeretném elvégezni php segítségével, mert egy olyan alkalmazást szeretnék, hogy ha valaki kitöröl egy táblát akkor autó csináljon egy biztonsági másolatot a php és azt írja ki egy fileba.
Addig eljutottam h. kiírja a táblák keletkezési kódját, de nem találtam megfelelő parancsot arra, hogy a táblák sorait is kiírja. vagyis az INSERT INTO ... dolgokat nem tudom hogy tegyem a parancshoz.

Eddig a kód:
  1. include "config_w.php";  
  2. //lekérjük a tábla neveket és egy tömbbe rakjuk  
  3. $kapcsolat= mysql_connect($localhost$felhasznalo$jelszo);  
  4. if(!$kapcsolat)   
  5. die ("Nem lehet csatlakozni a MySQL kiszolgálóhoz!" );  
  6. mysql_select_db($adatbazis$kapcsolator die ( "Nem lehet megnyitni a $adatbazis adatbázist: ".mysql_error() );  
  7. $parancs = "SHOW TABLES FROM $adatbazis";  
  8. $eredmeny = mysql_query ($parancs$kapcsolator die ("<br>".mysql_error() );  
  9. while($tabel = mysql_fetch_assoc($eredmeny)){  
  10.  //go through the array ( $db => $tabelname )  
  11.     foreach ($tabel as $db => $tabelname) {  
  12.     $tablak[]=$tabelname;  
  13.     }  
  14. }  
  15. mysql_close($kapcsolat);  
  16.   
  17. //ebből a tömbből a nevek segítségével kiderítjük a táblák szerkezetét  
  18. for($i=0; $i<count($tablak); $i++){  
  19. $kapcsolat= mysql_connect($localhost$felhasznalo$jelszo);  
  20. if(!$kapcsolat)   
  21. die ("Nem lehet csatlakozni a MySQL kiszolgálóhoz!" );  
  22. mysql_select_db($adatbazis$kapcsolator die ( "Nem lehet megnyitni a $adatbazis adatbázist: ".mysql_error() );  
  23. $parancs = "SHOW CREATE TABLE $tablak[$i]";  
  24. $eredmeny = mysql_query ($parancs$kapcsolator die ("<br>".mysql_error() );  
  25. $eredmeny = mysql_query ($parancs$kapcsolator die ("<br>".mysql_error() );  
  26. while($sor = mysql_fetch_assoc($eredmeny)){  
  27.  //go through the array ( $db => $tabelsor )  
  28.     foreach ($sor as $tabladb => $tabelsor) {  
  29.    print "$tabelsor<br><br>";  
  30.     }  
  31. }  
  32. mysql_close($kapcsolat);  
  33. }//for vége  
Nos itt tartok... ennek eredményeképp kiír egy ilyet :
pl:
info

CREATE TABLE `info` ( `szoveg` text NOT NULL ) TYPE=MyISAM

kategoriak

CREATE TABLE `kategoriak` ( `id` int(11) NOT NULL auto_increment, `kat_nev` varchar(255) default NULL, `kat_azonosito` varchar(255) default NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM



És itt szeretném hogy még szerepeljen az INSERT INTO...

Előre is köszi a segítséget!
 
1

hátha

xeras · 2007. Május. 2. (Sze), 17.37
ésigen, pontosan ezt szeretném énis!!

úgyhogy megpróbálom feléleszteni a topicot, hátha valaki betéved
2

mi a gond?

Gal Kristof · 2007. Május. 2. (Sze), 18.08
mi okozza a problémát? :)

egyszerűen lekéred a tábla sorait, csinálsz rá ciklust, és minden táblasornál beilleszted a mezőértékeket egy sztringbe, hozzácsapod a mezőneveket és kész.

Pl. $sor = "INSERT INTO tabla (mezo1, mezo2) VALUES ($mezoertek1, $mezoertek2)";

a példa elég béna, de mivel már foglalkoztál ilyesmivel gondolom kitalálod a hiányzó részeket...
3

khm..

xeras · 2007. Május. 4. (P), 16.27
na jójó, de én olyat szerettem volna, hogy beírom: mysql_query(EXPORT tábla TO file.txt) :)
vagyis valami belső funkciót, de látom nem úszom meg, meg kő csinálni rendesen...
4

van ilyen

gex · 2007. Május. 4. (P), 17.44
  1. <?php  
  2. shell_exec('mysqldump ...');  
  3. ?>  
szerk: kis segítség a mysqldump használatához (magyarul is)
5

safe módban is?

xeras · 2007. Május. 5. (Szo), 16.55
shell_exec(): Cannot execute using backquotes in Safe Mode
6

abban nem

gex · 2007. Május. 6. (V), 17.21
safe mode-ban nem fog menni. de te csak annyit kérdeztél, hogy hogyan lehetne egyetlen paranccsal, én erre válaszoltam, hogy így...