Newsgroup: it.comp.www.php
Titolo: Script per esportare database MySQL

E' possibile tramite uno script PHP salvare struttura e dati di un
database in un file .sql?
Ho questo problema perché non riesco piů ad accedere tramite
PHPmyadmin al mio database su Lycos, e vorrei quindi spostare tutto il
mio sito su un altro provider.
Grazie

 mio sito su un altro provider.
phpmyadmin e' uno script php per esportare anche sql.
Se con phpmyadmin facevi una connessione remota funzionava (una volta)?
Se metti una copia sul server dovrebbe quindi funzionare (in config.inc.php
metti
i valori del server mysql).



Già provato, ma evidentemente Lycos non permette di installare MySQL
nel proprio spazio perché non riesco a farlo funzionare. (avevo anche
inviato un messaggio a questo proposito qualche giorno fa)
Per questo vorrei fare uno script "artigianale", sono quasi sicuro che
sia possibile ma non so come.
Grazie cmq per la risposta.
 

> phpmyadmin e' uno script php per esportare anche sql.
Si ma come è possibile, ad esempio, costruire una funzione che 
importi/esporti dei dati in/da un database, in maniera da poter 
implementare questa funzione in un backend già costruito?
Mett.

 Grazie
se tu riuscissi ad usare un bel "dump", sarebbe un lampo...
dato che ho dei forti dubbi che tu possa farlo, l'unica è scrivere a mano un
dumper.
giusto per capirsi:
$query=mysql_query("SELECT * FROM ".$table) or die (''.mysql_error());
while ($result = mysql_fetch_array($query))
        {
        $text.='INSERT INTO '.$table.' VALUES ($result[0],$result[0],...);
        //scrivi una iterazione che sfogli tutte i fields della tabella 
        }
e poi salvi il file txt.
lo so che è una bella rogna, ma mi sa che è l'unica

 sia possibile ma non so come.
Quello che fa phpmyadmin e' quel minimo che dovrebbe fare anche il tuo script,
non c'e' differenza.
ti funziona un mysql_connect("host", "nome", "pass"); ???
metti i credenziali nel config.inc.php
precisamente:
$cfg['Servers'][$i]['host'] = ''; // quello fornito da lycos
$cfg['Servers'][$i]['user'] = ''; // nome utente fornito
$cfg['Servers'][$i]['password'] = ''; // la pass per mysql
tutto qui, guardo cmq. anche questi parametri:
$cfg['PmaAbsoluteUri'] = '
http://lycos.bla.bla.it/miosito/phpmyadmin
'; // nome
del tuo sito
il db potrebbe avere il tuo nome utente come nome:
$cfg['Servers'][$i]['only_db'] = '';



Probabilmente non ho spiegato bene il mio problema. So bene cosa sono
MySQL e PHPMyAdmin, e avevo anche già provato a installare
quest'ultimo, ma pur avendo inserito i parametri che uso normalmente
per connettermi al mio DB non funzionava. Evidentemente Lycos limita
in qualche modo le operazioni che si possono compiere sul DB, e
permette di farlo solo tramite la sua versione di PHPMyAdmin.
Grazie



Era proprio quello che volevo evitare, visto che ho almeno una decina
di tabelle, e bisogna anche generare il codice SQL per la loro
creazione 
Ho anche scritto al supporto tecnico di Lycos, ma non mi hanno
risposto. Va bene che è un servizio gratuito, ma sono almeno due
settimane che non posso accedere al mio DB!
Almeno volevo recuperare i miei dati e spostare tutto su un altro
servizio di hosting (qualcuno ha provato Altervista o ne conosce
altri?).
Comunque ho provato anche a usare mysqldump tramite exec(), ma non ci
riesco.
Grazie cmq per il codice.

 riesco.
Quindi c'e' mysqldump e lo puoi usare via exec?
Allora hai veramente solo un problema di credenziali
(oppure ti hanno tolto il db, cambiato password?).
Posta il codice che hai usato, magari e' solo una svista.
piu meno:
system("mysqldump -pzipino -uutonto --add-drop-table --quote-names nomedb >
mio.sql");
se fai uno script:
<?php
mysql_connect(<<< tuoi credenziali>>>) or die (mysql_error());
echo "siiiiiiiiiiiiiii, connesso";
?>
cosa ti da?

cosa ti da?
Il db esiste ancora, perché da qualsiasi altro script riesco a
connettermi sia in lettura che in scrittura (il sito funziona
perfettamente all'indirizzo 
www.vitus.cjb.net
).
C'è differenza tra usare exec e system? Io ho provato solo con il
primo:
 $USER = "xxx";
 $PASS = "xxx";
 $DATABASE = "xxx";
 $DUMP_FILE_NAME = date("dmYHis", time()).".sql";
 $CommandString = "mysqldump --add-drop-table -u $USER
--password=$PASS
 $DATABASE > $DUMP_FILE_NAME";
  exec($CommandString) or die("Non riuscito");

   exec($CommandString) or die("Non riuscito");
meglio system che ti visualizza eventualemente un po' di dati
cmq. farei questo:
 $cmd = "mysqldump -V 2>&1";
poi:
 $cmd = "mysqldump --add-drop-table -u $USER -p $PASS $DATABASE 2>&1";
se non da errori strani (tra altro, il host e' localhost? se no ci vuole anche
un
-h host ed il port e quello standard?):
 $cmd = "mysqldump --add-drop-table -u $USER -p $PASS $DATABASE >
$DUMP_FILE_NAME";
(mysqldump poi meglio con --quote-names, se usi nome strani per i campi
ti crea dei problemi quando importi i dati)
in ognicaso:
se riesci a far funzionare i tuoi script interni con il db, sei anche in grado
di far funzionare phpmyadmin, stesso brodo, stessa zuppa. Anche quello fa solo
mysql_connect e mysql_query
PERO': controlla la VERSIONE, se PHP < 4.1.0 e mySQL < 3.23.32 devi usare:
2.2.7-pl1
http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-2.2.7-pl1-php.tar.bz2?download


Proverņ tutti i tuoi suggerimenti, quest'ultimo mi sembra
particolarmente interessante ;-)
Per controllare la versione PHP uso phpinfo()?
e per MySQL?

e per MySQL?
Alla fine ce l'ho fatta! Grazie al tuo consiglio di installare la
vecchia versione di PhpMyAdmin, anche se in realtŕ Lycos utilizza
versioni abbastanza nuove di PHP e MySql.
Perň ho dovuto sporcarmi un po' le mani per costringere lo script a
vedere solo il mio db, infatti ho scoperto che non ho i privilegi per
eseguire la query SHOW DATABASES.
Adesso abbandonerň Lycos al piů presto... grazie ancora.