ho un problema visto ke fra poco aprirò un nuovo sito ho voluto farmi uno script ke mi fa il backup di ftp e database, ma sul secondo ho un problema: quando recuopero i dati mi salva tutti i database e le tabelle mentre i dati ke ci sono dentro funzionano solo su alcune tabelle.
ecco il codice:
ciao ^__^codice:<? include('config.php'); class dump_db { function dump_db() { global $host, $user, $pass, $cr_db; $this->host = $host; $this->user = $user; $this->pass = $pass; $this->cr_db = $cr_db; if( $this->connetti() == false ) { die(mysql_error()); } } function connetti() { if( ($this->db = mysql_connect($this->host, $this->user, $this->pass)) == false ) { return false; } return true; } function dump() { $back = ''; $query = mysql_query("SHOW DATABASES", $this->db) or die(mysql_error()); for( $x = 0; $x < mysql_num_rows($query); $x++ ) { $database = mysql_result($query, $x); if( $this->cr_db ) { $back .= "CREATE DATABASE `{$database}`;\n\n"; } $new_query = mysql_query("SHOW TABLES FROM {$database}", $this->db) or die(mysql_error()); for($i = 0; $i < mysql_num_rows($new_query); $i++ ) { $re = mysql_result($new_query, $i); $back .= " CREATE TABLE `{$re}` (\n"; $nquery = mysql_query("SHOW COLUMNS FROM {$database}.{$re}", $this->db) or die(mysql_error()); for( $k = 0; $k < mysql_num_rows($nquery); $k++ ) { $colun = mysql_result($nquery, $k, true); $tb = mysql_result($nquery, $k); $campo = $tb; $my = mysql_query("SHOW COLUMNS FROM {$database}.{$re} LIKE '{$campo}'") or die(mysql_error()); $rmy = mysql_fetch_array($my); $back .= ' `'.$campo.'`' . ' ' . $rmy['Type']; $back .= ($rmy['Extra'] != '') ? ' '.$rmy['Extra'] : ''; $back .= ($rmy['Key'] != '') ? ' PRIMARY KEY' : ''; if( $k+1 != mysql_num_rows($nquery) ) { $back .= ","; } $back .= "\n"; } $st = mysql_db_query($database, "SHOW TABLE STATUS LIKE '{$re}'", $this->db) or die(mysql_error()); $rst = mysql_fetch_array($st) or die(mysql_error()); $eng = $rst['Engine']; $aut = ($rst['Auto_increment'] == '') ? 1 : $rst['Auto_increment']; $back .= ") ENGINE={$eng} AUTO_INCREMENT={$aut};\n\n"; @set_time_limit(120); $campi = mysql_query("SHOW COLUMNS FROM {$database}.{$re}") or die(mysql_error()); $tot_campi = ''; $a = 1; while( $rc = mysql_fetch_array($campi) ) { $tot_campi .= '`'.$rc['Field'].'`'; if( $a != mysql_num_rows($campi) ) { $tot_campi .= ', '; } $a++; } } $tc = $tot_campi; $tot_campi = ''; $a = 1; $qq = @mysql_query("SELECT * FROM {$database}.{$re}", $this->db) or die(mysql_error()); while( $rq = @mysql_fetch_array($qq) ) { $back .= "INSERT INTO `{$re}` ($tc) VALUES ("; $cc = explode(', ', $tc); for( $z = 0; $z < count($cc); $z++ ) { $back .= "'".$rq[$z]."'"; if($z+1 != count($cc)) { $back .= ', '; } } $back .= ");\n"; } $back .= "\n"; } $this->back = $back; return $back; } function create_file() { $filename = 'dump_db_' . date('d-m-y') . '.sql.gz'; $handle = gzopen($filename, 'wb9'); if( gzwrite($handle, $this->dump(), strlen($this->dump())) ) { return true; } else { return false; } gzclose($handle); } } $back = new dump_db(); echo nl2br($back->dump()); /*if( $back->create_file() ) { echo "Il backup dei database è stato eseguito con successo"; } else { die('Errore durante l\'esportazione del database'); }*/ ?>

Rispondi quotando