vdepizzol 0 Denunciar post Postado Dezembro 14, 2005 Olá, Tenho um script para executar códigos PHP armazenados no banco de dados que não está funcionando muito bem.... $query = "SELECT * FROM `tabela`";$result = mysql_query($query) or die("Error: " . mysql_error());while($row = mysql_fetch_assoc($result)) { eval($row['codigo']);} Ao executar, por exemplo o seguinte código (colocando-o na tabela do bd), o eval() não funciona. $query = "SELECT * FROM `modulo_publicidade_campanhas`";$result = mysql_query($query) or die("Error: " . mysql_error());while($row = mysql_fetch_assoc($result)) { $query2 = "SELECT * FROM `modulo_publicidade_propagandas` WHERE (`cid`='".$row['id']."' AND (validade > NOW() OR validade = '0000-00-00 00:00:00')) ORDER BY RAND() LIMIT 0,1"; $result2 = mysql_query($query2) or die("Error: " . mysql_error()); $row2 = mysql_fetch_assoc($result2); $query3 = "UPDATE `modulo_publicidade_propagandas` SET `visualizacoes`=visualizacoes+1 WHERE `id`='".$row2['id']."'"; $result3 = mysql_query($query3) or die("Error: " . mysql_error()); if($row2['tipo'] == "imagem") { if($row2['link'] != "") { $output = '<a href="'.$row2['link'].'"><img src="'.SITE_INDEX."modulos/publicidade/".$row2['arquivo'].'" alt="'.corrigir_acentos($row2['nome']).'" /></a>'; } else { $output = '<img src="'.SITE_INDEX."modulos/publicidade/".$row2['arquivo'].'" alt="'.corrigir_acentos($row2['nome']).'" />'; } } elseif($row2['tipo'] == "flash") { $tamanho = getimagesize(SITE_PASTAS."modulos".DIRECTORY_SEPARATOR."publicidade".DIRECTORY_SEPARATOR.$row2['arquivo']); $output = '<object type="application/x-shockwave-flash" data="'.SITE_INDEX."modulos/publicidade/".$row2['arquivo'].'" width="'.$tamanho[0].'" height="'.$tamanho[1].'" title="'.corrigir_acentos($row2['nome']).'"> <param name="movie" value="'.SITE_INDEX."modulos/publicidade/".$row2['arquivo'].'" /> <param name="quality" value="high" /></object>'; } elseif($row2['tipo'] == "codigo") { $output = $row2['codigo-fonte']; } else { $output = ''; } $tpl->set('publicidade_'.$row['atalho'], $output); unset($output);} Ao colocar o mesmo código PHP fora do eval(), ele funciona! Alguém tem alguma explicação de como resolver esse problema??? Compartilhar este post Link para o post Compartilhar em outros sites
vdepizzol 0 Denunciar post Postado Dezembro 15, 2005 Alguém? Compartilhar este post Link para o post Compartilhar em outros sites
vdepizzol 0 Denunciar post Postado Dezembro 16, 2005 Achei o problema!!!!! A tag $row e $result estavam se confundindo com o código do eval()! Troquei para $inlinea_temp_query = "SELECT * FROM `tabela`";$inlinea_temp_result = mysql_query($inlinea_temp_query) or die("Error: " . mysql_error());while($inlinea_loop = mysql_fetch_assoc($inlinea_temp_result)) { $temp_inlinea_codigo = str_replace("$", "\$", $inlinea_loop['codigo']); eval($temp_inlinea_codigo);} e funcionou!!! Compartilhar este post Link para o post Compartilhar em outros sites