Ajuda em consulta SQL

10 respostas
T

Olá pessoal estou começando agora com SQL e estou com uma dúvida em uma consulta que necessito fazer. Fiz de uma maneira, mas creio que está errada pois ela não está me listando o resultado que quero. Meu código está em php:

$termo = $_POST['termo']; // Esse e o termo que o usuario envia via form pra pesquisar

//Agora essa é a consulta que estou tentando fazer:
$busca = "SELECT titulo,album,descr, FROM cdMusica WHERE titulo OR album OR descr LIKE '%".$termo."%'";

Minha idéia é pegar os atributos titulo, album e descricao de todos os CDs que contenha o termo em pelo menos 1 atributo.

No entanto essa query nao esta funcionando 100%. Alguém poderia me ajudar?

Obrigado

10 Respostas

R

tira a virgula depois do descr …

isso aí já tá errado…

também não sei se pode dois OR, mas não tenho certeza disto. talvez possa ser com virgulas, tenta sem or, primeiro e vai fazendo o teste.

tenta sem o like primeiro…

e eu sugiro fazer as aspas menores uma vez só…

vc só pode fechar a aspas grandes no final do comando…

e usar uma aspas pequena uma vez no like (a princípio uma vez…)

mas quando tu fecha a aspas grande, tá fechando o comando todo.

por enquanto é isto…
simplifica ele, e faz funcionar. depois tu vai aumentando a dificuldade da pesquisa, e vai vendo o erro que vai surgindo… entendeu?

faz primeiro só um select* from cd musica, bem simples e depois, vai mudando as coisas…

para ver se ao menos ele está enxergando este comando…

isto aí. poste resultados…

R

o select tudo, tem que ter espaço ali lógico…
entre o asterisco e o select…

select * from cdmusica

carlos.e.a

Pode quantos ORs forem necessarios =D

R

ta tudo bem. então abstrai os Ors, mas veja as outras coisas que eu falei.

conseguiu fazer funcionar só com o select simples com asterisco?

depois veja o detalhe da aspas no final, pois vc fecha o comando antes dele terminar,

a virgula antes do from também creio que não exista, pois não vem nada depois. tira ela.

tá funcionando?

carlos.e.a

Ops, correcao: do modo que ele esta fazendo acho que nao pode mesmo o OR viu…Viajei achei que o cara tava usando OR em expressoes diferentes. Pra falar a verdade tambem nao sei se pode. Mas pra garantir seria melhor voce fazer isso em expressoes diferentes.

edit: Fiz um teste aqui e até que roda, nao da erro de sintaxe nem nada mas o resultado nao é o esperado.

edit2: Entendi a logica nesse negocio. Na verdade fazendo desse jeito ele vai tratar as suas variaveis como booleanos. Resumindo, nao faça dessa forma. Faça o teste para cada coluna.

R

pois é acho estranho, muitos OR, mas como disse um teste resolve. a vírgula parece mais funcional e lógica, pois no início as tabelas são tratados com vírgulas…

estava procurando aqui e achei um exemplo, deste modelo, segue aí, o que quero dizer que é uma forma certa, testada e que funciona…

$busca=$_POST["buscapalavra"];
	$sql = mysql_query("SELECT * FROM forum  where texto  like '%$busca%'  or  titulo  like '%$busca%' ORDER BY id DESC");

as aspas só podem fechar no final, e o like foi usado duas vezes.
talvez pudesse ser usado até uma vez só, mas assim funcionou, e deixei assim. não fiz outro teste.
diante desta pergunta é que me questiono se deveria ou poderia ter usado um like só, no momento, não me pareceu necessário.

e o tunai, tá por aí?
resolveu?

R

e aí pessoal, resolveram? tunai?

T

Oh grande valeu. Fazia tempo que nao mexia com SQL, a sintaxe é essa mesma que voce postou.

Obrigado ai pela atenção!
Abraços!

R

acordei vc. hehe

R

enfim, gosto de acompanhar o que for possível, tens o link da aplicação ou é só desktop?

valeu…

:-o :slight_smile: :slight_smile: :slight_smile: :wink: 8)

Criado 24 de janeiro de 2012
Ultima resposta 26 de jan. de 2012
Respostas 10
Participantes 3