jruiz 0 Denunciar post Postado Setembro 22, 2004 Estou procurando ajuda para identificar porque o while abaixo não funciona (o mysql diz "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/jruiz/public_html/ie_port/mural/mail_mural.php on line 10". Detalhe, esse código está "embutido" dentro de outro (include) e eu não consigo achar o erro:$sql = "SELECT nome, email, FROM authuser2 WHERE STATUS = 'ativo'";$resultado = mysql_query($sql);while ($linha = mysql_fetch_array($resultado)) { $nome = $linha['nome']; $email = $linha['email']; $assunto = "Novidades no Mural"; $email_env = "corretores@jruiz.com.br"; $email_reply = "corretores@jruiz.com.br";... o código continua (é uma página html para enviar por email) $msg.= "</body>"; mail($email, $assunto, $msg, $header);} mysql_close($dbh);?> :wacko: Compartilhar este post Link para o post Compartilhar em outros sites
rockbilly 0 Denunciar post Postado Setembro 22, 2004 tenta colocar as vars de conexao, talvez pode ser isso, incluas antes da consulta sql! Compartilhar este post Link para o post Compartilhar em outros sites
xscully 0 Denunciar post Postado Setembro 22, 2004 eh.. esse erro eh no comando SQL... $sql = "SELECT nome, email, FROM authuser2 WHERE STATUS = 'ativo'"; talvez a vírgula? :mellow: edit: coloca um or die logo depois de executar o sql e ve o erro que dá.. $resultado = mysql_query($sql) or die(mysql_error()); Compartilhar este post Link para o post Compartilhar em outros sites
jruiz 0 Denunciar post Postado Setembro 22, 2004 antes do select (início do código) tem uma rotina de conexão com o bd. Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Setembro 22, 2004 Quando você usa no while o mysql_fetch_array, a cada loop ele pega uma linha do db, se tiver 4 linhas ele vai até o 4, daí tenta pegar com mysql_fetch_array a 5ª linha, como não existe, o loop para e é retornado esse erro (que na verdade não é bem um erro), pra corrigir é só usar um @ antes: @mysql_fetch_array ;) Compartilhar este post Link para o post Compartilhar em outros sites
jruiz 0 Denunciar post Postado Setembro 22, 2004 http://forum.imasters.com.br/public/style_emoticons/default/blush.gif não acredito... era a vírgula mesmo. Obrigado!!! Compartilhar este post Link para o post Compartilhar em outros sites
xscully 0 Denunciar post Postado Setembro 22, 2004 Quando você usa no while o mysql_fetch_array, a cada loop ele pega uma linha do db, se tiver 4 linhas ele vai até o 4, daí tenta pegar com mysql_fetch_array a 5ª linha, como não existe, o loop para e é retornado esse erro (que na verdade não é bem um erro), pra corrigir é só usar um @ antes: @mysql_fetch_array ;)mas quando usamos o while (mysql_fetch_array($x)) ele só vai fazer loop enquanto achar linha no $x... senão ele nem entra no while..rs!! as vezes passo por isso tb.. o erro é tão 'bobo' que deixamos passar Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Setembro 23, 2004 Primeiro a condição inteira dentro do while é testada (dentro dos parenteses eu digo) pra depois ver se é verdadeira ou falsa, se for verdadeira é executado o while caso contrário o loop para, ou seja, é usado sim o mysql_fetch_array mesma não existindo a linha, no caso se tiver um erro na query o mysql_fetch_array não vai encontrar nenhuma linha, vai ser executado uma vez a função sem nenhum valor e vai retornar o erro. ;) Compartilhar este post Link para o post Compartilhar em outros sites
xscully 0 Denunciar post Postado Setembro 23, 2004 Primeiro a condição inteira dentro do while é testada (dentro dos parenteses eu digo) pra depois ver se é verdadeira ou falsa, se for verdadeira é executado o while caso contrário o loop para, ou seja, é usado sim o mysql_fetch_array mesma não existindo a linha, no caso se tiver um erro na query o mysql_fetch_array não vai encontrar nenhuma linha, vai ser executado uma vez a função sem nenhum valor e vai retornar o erro. ;)Sim.. isso é verdade.. mas o que quis dizer na msg anterior é que essa função não retorna ERRO quando não encontra linha... ela apenas retorna FALSE... e esse FALSE faz o while parar... (leia de novo a sua primeira mensagem...)por isso que sempre uso "or die(mysql_error())" durante o desenvolvimento...$rs = mysql_query($sql) or die(mysql_error());pra quando tiver algum erro no SQL ele para por ali mesmo dizendo o que está errado... ;) Compartilhar este post Link para o post Compartilhar em outros sites