Ilair dos Santos Postado Junho 4, 2020 Denunciar Share Postado Junho 4, 2020 Olá! sou novo no fórum e no PHP, então gostaria de saber o que está errado no código a seguir: <?php $backup_file_format = "sql"; $backup=''; $tabelas=array(); $dbHost='localhost'; $dbName='altenhofen'; $dbUser='root'; $dbPass='02220769'; $PDO = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8", $dbUser, $dbPass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")); $PDO->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $PDO->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC ); if( !empty( $_POST['database'])){ $Tables = $PDO->query( 'SHOW TABLES FROM `'.$_POST['database'].'`' )->fetchAll(); for( $i = 0; $i < sizeOf( $Tables ); ++$i ){ foreach( $Tables[ $i ] as $index => $data ){ $tabelas[]=$data; } } } foreach($tabelas as $index => $data1 ){} $erro=0; if( isset( $_POST['submit'] ) ){ $file = fopen($_POST['localbanco'].'backup_'.date("dmy", time()).'.'.$backup_file_format.'', "w+"); } else { $file = fopen('c:/bkp_dados/backup_'.date("dmy", time()).'.'.$backup_file_format.'', "w+"); } $lcmd='/*!40101 SET NAMES utf8 */;'.chr(13).chr(10); fwrite($file, $lcmd); if( isset( $_POST['submit'] ) ){ $PDO->query( 'USE `'.$_POST['database'].'`' ); foreach( $tabelas as $index => $data ){ $create = $PDO->query( 'SHOW CREATE TABLE `'.$data.'`' )->fetchAll(); foreach( $create as $createTable){ $fcreate=$createTable[ 'Create Table' ]. ";\n\n"; } $select = $PDO->query( 'SELECT * FROM `'.$data.'`' )->fetchAll(); if(sizeOf($select)>0) { for( $i = 0; $i < sizeOf( $select ); ++$i ){ foreach( $select[ $i ] as $field => $value ){ $fields[ $field ] = '`'.$field.'`'; if( !is_numeric( $value ) ){ $values[ ] = sprintf( "'%s'", $value ); }else{ $values[ ] = ( float ) $value; } } $result[ ] = sprintf( '( %s )', implode( ', ', $values ) ); unset( $values ); } $r=sprintf( "INSERT INTO `%s`( %s ) \nVALUES \n%s; \n\n", $data, implode( ',', $fields ), implode( ", \n", $result ) ); } $backup.=$fcreate.' '.$r; unset( $result, $fields ); unset($r, $fcreate); } fwrite($file, $backup); fclose($file); echo"<script language=javascript>alert('Geração do backup concluida com sucesso!')</script>"; echo"<script language=javascript>location.href='../application.php'</script>"; } ?> Teoricamente é pra fazer backup, mas na realidade não está fazendo nada, até cria o arquivo, mas não tem nada dentro dele, gostaria de saber o que está errado, esse é um código de outra pessoa, assumi o sistema, e estou tentando ajustar isso. Grato pela Atenção! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Frank K Hosaka Postado Fevereiro 10, 2023 Denunciar Share Postado Fevereiro 10, 2023 Fiz uma adaptação para usar aqui, usando o meu banco de dados, e fui tentando acompanhar a evolução do código com a ajuda do comando var_dump( ), até chegar no núcleo do programa: $file = fopen('c:/wamp64/www/astudy/backup_'.date("dmy", time()).'.'.$backup_file_format.'', "w+"); $lcmd='/*!40101 SET NAMES utf8 */;'.chr(13).chr(10); fwrite($file, $lcmd); esse comando deveria aparecer mais de uma vez para relacionar os outras informações que você esperava. Esse código que você passou está incompleto, ou o desenvolvedor abandonou o projeto por ver que é mais fácil usar o serviço do backup do PhpMyAdmin ou, no meu caso, do MySQL Workbench. Aqui a listagem do que eu consegui alterar: <?php $backup_file_format = "sql"; $backup=''; $tabelas=array(); $dbhost='localhost'; $dbname='astudy'; $dbuser='root'; $dbpass=''; $PDO = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8", $dbuser, $dbpass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")); $PDO->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $PDO->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC ); if( !empty($dbname)){ $Tables = $PDO->query('SHOW TABLES')->fetchAll(); foreach( $Tables as $index => $data ){$tabelas[]=$data;} $erro=0; $file = fopen('c:/wamp64/www/astudy/backup_'.date("dmy", time()).'.'.$backup_file_format.'', "w+"); $lcmd='/*!40101 SET NAMES utf8 */;'.chr(13).chr(10); fwrite($file, $lcmd); $PDO->query( 'USE `astudy`' ); foreach( $tabelas as $index => $data ){ var_dump($tabelas); $create = $PDO->query( 'SHOW CREATE TABLE `'.$data.'`' )->fetchAll(); foreach( $create as $createTable){ $fcreate=$createTable['Create Table']. ";\n\n";} $select = $PDO->query( 'SELECT * FROM `'.$data.'`' )->fetchAll(); if(sizeOf($select)>0) { for( $i = 0; $i < sizeOf( $select ); ++$i ){ foreach( $select[ $i ] as $field => $value ){ $fields[ $field ] = '`'.$field.'`'; if( !is_numeric( $value ) ){ $values[ ] = sprintf( "'%s'", $value );} else { $values[ ] = ( float ) $value;} } $result[ ] = sprintf( '( %s )', implode( ', ', $values ) ); unset( $values );}}}} Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Ilair dos Santos
Olá!
sou novo no fórum e no PHP, então gostaria de saber o que está errado no código a seguir:
Teoricamente é pra fazer backup, mas na realidade não está fazendo nada, até cria o arquivo, mas não tem nada dentro dele, gostaria de saber o que está errado, esse é um código de outra pessoa, assumi o sistema, e estou tentando ajustar isso.
Grato pela Atenção!
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.