19. december 2010 - 22:31
Der er
13 kommentarer og 1 løsning
Hjælp til at finde data i mysql database
Hej... Jeg har denne streng: $result = mysql_query("SELECT * FROM data WHERE MATCH (kw) AGAINST ('{$term}' IN BOOLEAN MODE)"); I min database er der en række hvor kw = pick something up der er også en hvor kw = pick up $term = how to pick up an apple Jeg vil gerne bruge 'kw' fra min mysql database til at søge i $term for at finde et match. Hvis jeg kører ovenstående nu, så får jeg et match på 'pick something up'. Det vil jeg ikke ha. Jeg vil kun ha et match på 'pick up'. Hvordan skal jeg kringle den?
Annonceindlæg fra HP
19. december 2010 - 23:37
#1
Hvad betyder de 2 tuborg-paranteser omkring $term? Prøv at skifte dem ud med \" så $term får double quotes i start og slut. Så skulle du søge på frasen i stedet for listen af ord.
19. december 2010 - 23:51
#2
Tjens>> Jeg ved faktisk ikke hvad de betyder... Jeg har lidt copy/pasted fra andre sider... Og så vidt jeg kan se gør det ikke nogen forskel om de er der eller ej. Mit problem er at jeg vil gerne lave et exact match på kw (fra databasen). Så begge ord i "pick up" skal matche og være tilstede før den vælger noget (se min beskrivelse i det første indlæg). Jeg har prøvet at sætte "" rundt om kw, og jeg har også prøvet med \", men det virker ikke :(
20. december 2010 - 03:24
#3
prøv med: $result = mysql_query("SELECT * FROM data WHERE MATCH (kw) AGAINST ('".$term."' IN BOOLEAN MODE)");
20. december 2010 - 08:38
#4
Jeg havde overset at din $term var længere end den frase du ønsker exact match på: $term = how to pick up an apple Jeg skulle nok have foreslået:$term = 'how to "pick up" an apple'; i stedet.
20. december 2010 - 09:20
#5
splazz>> Det gir det samme resultat ;( Jeg tænker lidt at det logiske at gøre, ville være at sætte quotes rundt om databasefeltet (kw)...? tjens>> Det kan ikke lade sig gøre, fordi $term er en variabel der skifter fra gang til gang.
20. december 2010 - 10:34
#6
OK, men vil du teste #4 alligevel, så vi kan lære mere om hvordan tekstsøgninger virker i din database.
20. december 2010 - 20:05
#7
forskellen på '.$var.' og '{$var}' er, at $var kommer fra en variabel variabel.. Altså: $test = 'var'; $$test = 'noget'; print {$test}; // Vil give "noget"
20. december 2010 - 21:37
#8
Jeg har endelig fundet en løsning. Løsningen er: $result = mysql_query("SELECT * FROM data WHERE ('$term') REGEXP (kw)"); Det virker... Jeg har ikke helt styr på hvad forskellen er mellem REGEXP og AGAINST er, men det virker ihvertfald nu :)
05. januar 2011 - 22:54
#9
splazz>> Kan du skrive et svar
06. januar 2011 - 09:15
#10
det var dig selv der fandt løsningen, behold selv dine point :)
06. januar 2011 - 20:17
#11
Ja men så alligevel... dit svar var frøet der udviklede sig til en løsning :)
06. januar 2011 - 20:23
#12
nup du dem bare selv.. jeg har nok :)
06. januar 2011 - 20:31
#13
Det var da alligevel utrolig svært at få afsat nogle points :)
07. januar 2011 - 10:04
#14
ja dem slipper du ikke så let af med her du ;)
Vi tilbyder markedets bedste kurser inden for webudvikling