Estou tendo um problema muito estranho com PHP + Mysql: um select trivial está funcionando normalmente no mysql-front mas não está trazendo nenhum resultado no PHP. Não ocorre nenhum erro na busca pelo PHP, apenas não recebo nenhum resultado, ao contrário do mysql-front que traz o resultando sem qualquer tipo de problema.
A busca que estou realizando é a seguinte:
$stringBusca = "select a.prodcont_id, b.prod_nome, c.pos_nome from produtos_contagens a, produtos b , postos c where a.prodcont_produtoID=b.prod_id and a.prodcont_postoID=c.pos_id";
$resultado = mysql_query($stringBusca ,$conectar);
$registro = mysql_fetch_array($resultado);
if ($registro = mysql_fetch_array($resultado))
echo "encontrou";
else
echo "não encontrou";
Absurdamente, sempre recebo a resposta “não encontrou”. Se peço pra printar a variável com a string de busca ($stringBusca) e jogo o resultado no mysql-front eu obtenho o resultado que desejo, sem fazer absolutamente nenhum alteração!
Agora, se eu trocar a busca por algo ainda mais simples, por exemplo “select * from produtos” tudo funciona normalmente.
Alguém tem algum palpite do que pode estar ocorrendo???
$stringBusca = "select a.prodcont_id, b.prod_nome, c.pos_nome from produtos_contagens a, produtos b , postos c where a.prodcont_produtoID=b.prod_id and a.prodcont_postoID=c.pos_id";
$resultado = mysql_query($stringBusca ,$conectar);
while($registro = mysql_fetch_array($resultado)){
echo $registro['prod_nome'];
//....outro campos
}
Cara, tem um tempo que eu não programo em PHP, mas vc chamou a função “mysql_fetch_array” duas vezes:
$registro = mysql_fetch_array($resultado);
if ($registro = mysql_fetch_array($resultado))
Se a consulta tiver retornado somente uma linha, na primeira chamada ela é retornada como array pra variável registro, e na segunda chamada, justamente o teste do IF, é retornado false porque não existe mais registros… Talvez seja isso…
[quote=bob_sponja]Cara, tem um tempo que eu não programo em PHP, mas vc chamou a função “mysql_fetch_array” duas vezes:
$registro = mysql_fetch_array($resultado);
if ($registro = mysql_fetch_array($resultado))
Se a consulta tiver retornado somente uma linha, na primeira chamada ela é retornada como array pra variável registro, e na segunda chamada, justamente o teste do IF, é retornado false porque não existe mais registros… Talvez seja isso…[/quote]
Cara, vc tem razão. Fiz um teste aqui e é isso mesmo.
A minha deixei minha instrução da seguinte forma e funcionou:
$stringBusca = "select a.prodcont_id, b.prod_nome, c.pos_nome from produtos_contagens a, produtos b , postos c where a.prodcont_produtoID=b.prod_id and a.prodcont_postoID=c.pos_id";
$resultado = mysql_query($stringBusca ,$conectar);
$registro = mysql_fetch_array($resultado);
if ($registro)
{
Agora ele encontra e traz o resultado exatamente como o esperado. O estranho é que essa alteração foi necessária para esse tipo de select, se eu colocar um outro select mais simples funciona mesmo com o meu código reduntante de antes… vai entender, né.
Muito obrigado, bob_sponja!
Que isso, nem precisa agradecer, estamos aqui pra isso =)…
Quanto aos outros códigos que estavam iguais e funcionavam, pode ser que eles retornavam mais de um registro, como falei… mas o importante é que vc resolveu seu problema, então, boa sorte e bons códigos pra vc aí =)…