Avatar billede learner Praktikant
10. april 2006 - 18:10 Der er 13 kommentarer og
1 løsning

Er dette korrekt query?

Hej :o)
Jeg gemmer et array i min database med want_id = '".implode(",",$array_der_skal_gemmes)."' så jeg får feks indsætter '221,233,445,321,11' eller '221' eller '221,2211' og vil gerne søge om der findes xxx i array'et/strengen

Er dette den korrekte måde at skrive query'en:

mysql_query("SELECT * FROM users_match WHERE want_id LIKE '%,".$want_id."' OR want_id LIKE '%,".$want_id.",%' OR want_id LIKE '".$want_id.",%' ")

På forhånd tak :o)
Avatar billede jakobdo Ekspert
10. april 2006 - 18:18 #1
Jeg vil mene det skal være:
mysql_query("SELECT * FROM users_match WHERE want_id LIKE '%".$want_id."' OR want_id LIKE '%".$want_id."%' OR want_id LIKE '".$want_id."%'");

Altså uden %, og ,% men bare %
Avatar billede learner Praktikant
10. april 2006 - 18:22 #2
jo men hvis strengen er '2211,222' så er LIKE '%221' jo sand, hvis du forstår. Derfor sætter jeg komma'erne. Eller tager jeg fejl der?
Avatar billede morhan Novice
10. april 2006 - 18:23 #3
want_id = ',".implode(",",$array_der_skal_gemmes).",'

så indsætter du ',1,2,3,'

dvs strengen starter og slutter altid med komma. Så kan søgningen laves sådan:

mysql_query("SELECT * FROM users_match WHERE want_id LIKE '%,$want_id,%'")
Avatar billede learner Praktikant
10. april 2006 - 18:24 #4
strengen står jo enten alene '221', i starten '221,33', i midten '44,221,666', eller i slutningen '333,221'
Avatar billede jakobdo Ekspert
10. april 2006 - 18:24 #5
Nej nej, så skal du have ,'et med. :o)
Og så burde din sql være helt korrekt.
Avatar billede learner Praktikant
10. april 2006 - 18:28 #6
jeps det var osse min første ide, men så er problemet når man trækker ud af db for at lave et array ( $array = explode(",", ",2,1,3,4,5,"); ) så får jeg to tomme poster/strenge i arrayet. den første $array[0] og den sidste $array[6] bliver begge tomme. Så derfor droppede jeg den løsning...

:o)
Avatar billede learner Praktikant
10. april 2006 - 18:28 #7
hovsa så ikke dit indlæg..
Avatar billede learner Praktikant
10. april 2006 - 18:29 #8
Nåh men godt, så bruger jeg den :o)
Mange TAK for hjælpen :o)

Smider du et svar :o)
Avatar billede jakobdo Ekspert
10. april 2006 - 18:31 #9
Morhan eller mig?
Avatar billede morhan Novice
10. april 2006 - 18:33 #10
for at samle strengen til et array igen, kan du blot fjerne kommaerne

$arr = explode(",", trim($streng_fra_db, ","));
Avatar billede fixxxer Nybegynder
10. april 2006 - 19:47 #11
Øhm hvad med IN ?

mysql_query("SELECT * FROM users_match WHERE want_id IN(".join(',', $array_der_skal_gemmes).")")
Avatar billede learner Praktikant
11. april 2006 - 11:12 #12
Tak for hjælpen allesammen :o)
smid svar morhan og jakobdo

fixxxer - ja, jeg er lige begyndt at bruge IN() mere :o) tak til dig osse
Avatar billede jakobdo Ekspert
11. april 2006 - 11:19 #13
Svar!
Avatar billede jakobdo Ekspert
28. oktober 2006 - 11:42 #14
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester