Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jruiz

while

Recommended Posts

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.