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:

include "config_w.php";
//lekérjük a tábla neveket és egy tömbbe rakjuk
$kapcsolat= mysql_connect($localhost, $felhasznalo, $jelszo);
if(!$kapcsolat) 
die ("Nem lehet csatlakozni a MySQL kiszolgálóhoz!" );
mysql_select_db($adatbazis, $kapcsolat) or die ( "Nem lehet megnyitni a $adatbazis adatbázist: ".mysql_error() );
$parancs = "SHOW TABLES FROM $adatbazis";
$eredmeny = mysql_query ($parancs, $kapcsolat) or die ("<br>".mysql_error() );
while($tabel = mysql_fetch_assoc($eredmeny)){
 //go through the array ( $db => $tabelname )
    foreach ($tabel as $db => $tabelname) {
    $tablak[]=$tabelname;
    }
}
mysql_close($kapcsolat);

//ebből a tömbből a nevek segítségével kiderítjük a táblák szerkezetét
for($i=0; $i<count($tablak); $i++){
$kapcsolat= mysql_connect($localhost, $felhasznalo, $jelszo);
if(!$kapcsolat) 
die ("Nem lehet csatlakozni a MySQL kiszolgálóhoz!" );
mysql_select_db($adatbazis, $kapcsolat) or die ( "Nem lehet megnyitni a $adatbazis adatbázist: ".mysql_error() );
$parancs = "SHOW CREATE TABLE $tablak[$i]";
$eredmeny = mysql_query ($parancs, $kapcsolat) or die ("<br>".mysql_error() );
$eredmeny = mysql_query ($parancs, $kapcsolat) or die ("<br>".mysql_error() );
while($sor = mysql_fetch_assoc($eredmeny)){
 //go through the array ( $db => $tabelsor )
    foreach ($sor as $tabladb => $tabelsor) {
   print "$tabelsor<br><br>";
    }
}
mysql_close($kapcsolat);
}//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

<?php
shell_exec('mysqldump ...');
?>
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...