Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tudo bem pessoal?
No código abaixo, estou fazendo uma consulta nas tabelas, banners e banners_referencia
Meu objetivo é trazer resultados com valores iguais ao nome da cidade declarada na $cidade ou resultados com a referencia Total.
O problema é que está trazendo todos os resultados. Tenho 10 linhas, 1 com o nome da cidade e duas com o valor Total, então o resultado teria que ser de apenas 3 linhas, mas mostra tudo.
$banner = "SELECT A.*, B.* FROM banners A, banners_referencia B WHERE B.cod_referencia = A.cod_referencia AND A.cidade = '$cidade' OR B.referencia = 'Total' ORDER BY RAND()";
$banner = mysqli_query($conexao, $banner) or die ("Banner não encontrado");
while($busca= mysqli_fetch_array($banner)){
print $busca['cidade'].'<br>';
};
Alguém consegue me ajudar?
Não entendi o objetivo, afinal os resultados duplicados segundo a query apresentada estão duplicados no banco de dados.
Tente usar JOIN na query e monte-a mais conivente com o objetivo, como acredito eu que em ambas tabelas possuem dados duplicados o operador ON na query pode isolar aqueles que possuem colunas com valor igual.
Sem ter mais informações considere algumas alternativas
Usar a função nativa do php array_filter
Criar novo array organizando e definindo esse array como necessário usando os dados obtidos da query.
Evitar uso da função while quando não se está usando dados que podem ter inicio ou fim, pois dependendo da situação pode sobrecarregar o servidor (máquina) caso os dados podem ser inesperados, além de danos ao hardware em sobrecarga de tarefa em loops infinitos.
Você pode testar durante o processo de produção e até pode identificar problemas apenas usando a função: