bigcheat 0 Denunciar post Postado Abril 12, 2011 Estou tentando fazer uma espécie de backup de vários itens de uma tabela sem precisar fazer muito esforço, só que o código nunca pega as linhas da forma que eu quero, na ordem certa, ele sempre repete um ou dois itens. Alguém sabe o que deve ser e o que eu posso fazer para corrigir isso? Logo abaixo está os arquivos que o script compõe. Aguardo uma resposta. config.php <?php $SERVIDOR = "localhost"; $USUARIO = "root"; $SENHA = ""; $DATABASE_W = "world"; $DATABASE_C = "characters"; $DATABASE_B = "bigcheat"; $CONEXAO_W = mysql_connect ( $SERVIDOR, $USUARIO, $SENHA ); $CONEXAO_C = mysql_connect ( $SERVIDOR, $USUARIO, $SENHA ); $CONEXAO_B = mysql_connect ( $SERVIDOR, $USUARIO, $SENHA ); $W = mysql_select_db ($DATABASE_W,$CONEXAO_W); $C = mysql_select_db ($DATABASE_C,$CONEXAO_C); $B = mysql_select_db ($DATABASE_B,$CONEXAO_B); define('DEBUG',true); ?> index.php <?php include "config.php"; $tipo_adc = 0; $itens = "90000,90001,90002"; $itens = explode(",",$itens); $table = "item_template"; $script = ""; $fields = ""; $fields_v = ""; $valors = ""; for($i=0;$i<count($itens);$i++) { $sql = mysql_query("SHOW COLUMNS FROM ".$DATABASE_W.".".$table); if($tipo_adc == 1 || $tipo_adc == 0) $script .= "INSERT"; if($tipo_adc == 2) $script .= "REPLACE"; $script .= " INTO ".$table." ("; while($row = mysql_fetch_assoc($sql)){ $fields .= $row['Field'].','; } $fields = substr_replace($fields,'',strlen($fields)-1,1); $fields = explode(",",$fields); for($ii=0;$ii<count($fields);$ii++) { $fields_v .= $fields[$ii].','; } $fields_v = substr_replace($fields_v,'',strlen($fields_v)-1,1); $script .= $fields_v; $script .= ") VALUES ("; $sql = mysql_query("SELECT * FROM ".$DATABASE_W.".".$table." WHERE entry='".$itens[$i]."'"); while($r = mysql_fetch_array($sql)) { //for($o=0;$o<count($fields);$o++) foreach ($fields as $o => $o) { global $r,$fields; if(is_string($r[$fields[$o]])) { $valors .= "'.$ item['".$fields[$o]."'].',"; }elseif(is_numeric($r[$fields[$o]])) { $valors .= $r[$fields[$o]].","; } } unset($o); $valors = substr_replace($valors,'',strlen($valors)-1,1); $script .= $valors; $script .= "); "; } } echo "<textarea>".$script."</textarea>"; ?> Abraços, bigCheat. Compartilhar este post Link para o post Compartilhar em outros sites
bigcheat 0 Denunciar post Postado Abril 12, 2011 Descobri o problema por sí só, as variáveis estavam continuando preenchidas por causa que só era determinadas antes do for, ou seja, enquanto eu não recomeçasse o script elas não se destruiriam para que eu podesse começar novamente o outro código do outro backup. Em fim, bastou dar um unset no fim do script, em cada variável. Espero que ajude a outros. Abraços, bigCheat. :) Compartilhar este post Link para o post Compartilhar em outros sites