select med flere where?

Tags:    databaser

<< < 12 > >>
Hej allesammen... Jeg sidder her og prøver at lave en mysql kode som søger efter søgeordet i flere forskellige kolonner, men kan ikke få det til at virke... har prøvet en masse forskellig, men mit bedste bud er det her :
Fold kodeboks ind/udKode 


nogen der kan fortælle mig hvad der er galt?

mange tak :)



14 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Det ser korrekt ud. Du må give mere information



prøv at skrive det som name like '%keyword%' or `desc` like '%keyword%'

Derudover, så er ` erne tilføjet fordi desc jo er et reserveret ord af MySQL. Som den bruger når man skal ORDER BY. Fx ORDER BY id DESC. Uden ` vil den jo tro du bruger dette, og så kan den jo ikke forstå resten af sætningen. Derfor melder den fejl.

Jeg vil på det kraftigste anbefale dig at ændre rækkens navn.



her er lidt mere af koden :
Fold kodeboks ind/udKode 

er det noget af det andet der er noget galt med ?


Min fokus falder umiddelbart på din sql sætning.

select * from tabel
where name or desc like '%$keyword%' order by $ord $dir

Skal den ikke i stedet være nedenstående (jeg kan ikke se hvordan du får den "or desc" presset ind i den sætning). OR hører efter hvad jeg kan se ikke hjemme der og DESC er din sorteringsrækkefælge som skal stå sammen med felterne i din ORDER.

select *
from tabel
where col1 like '%$keyword%'
order by $ord $dir

Eller med to kolonner

select *
from tabel
where (
col1 like '%$keyword%' or
col2 like '%$keyword%'
)
order by $ord $dir

Hth



Indlæg senest redigeret d. 26.02.2007 00:01 af Bruger #10448
ordet desc er et reserveret ord i MySQL. For at undgå ballade med reserverede ord, prøv at sætte ` rundt om dine tabel info:

Og for din egen skyld, så du lettere kan kende forskel på mysql kommandoer og variabler, skriv de reserverede ord med stort:

Fold kodeboks ind/udKode 


Prøv med min kode, og se om det ikke skulle virke...



ville også foreslå han lod være med at navn give sine ting til reserveret ord :).

"SELECT * FROM `tabel` WHERE `name` LIKE '%$keyword%' OR `desc` LIKE '%$keyword%' ORDER BY $ord $dir"



får denne fejlmeddelelse: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'nogetandet LIKE '%det jeg har søgt efter%'' at line 1"

er ret sikker på det er i mysql koden der er noget galt da det virkede helt perfekt før jeg prøvede at få den til at søge på to kolonner :s



Prøv istedet at skrive:
Fold kodeboks ind/udKode 




får fuldstændig det samme at vide :s



undskyld men ka det passe at det her ikke må stå bagefter : or die(mysql_error()) :P har lige fjernet det og nu ser det ud til at virke . heeh



hmm, nej , det virker stadig ikke, men får ingen fejlmeddelelse... men det er nok php-koden så :P



<< < 12 > >>
t