webForumDet fria alternativet

Hämtar info som den inte ska

Databaser & SQLur Databashanterare & SQL

5 svar · 242 visningar · startad av Pedda

Medlem sedan juni 20006 032 inlägg
Frågan#1

Har problem med denna sql sats. Har nog stirrat mig blind utan att fatta vad som är fel.

Problemet är att den hämtar informationen även om godkannd inte är 2.

Någon som kan se vad jag gjort för fel?

$data = mysql_query("SELECT id, foretag, ort, beskrivning FROM foretag WHERE godkannd = 2 AND $var OR $split ORDER BY foretag LIMIT $from_records,$max_per_page");
Medlem sedan juni 200032 969 inlägg
#2

Till att börja med skulle det vara intressant att se den färdiga SQL-frågan.

Du skulle behöva fundera lite över hur du vill att dina villkor ska evalueras. Jag antar att det är det här du är ute efter:

$data = mysql_query("SELECT id, foretag, ort, beskrivning FROM foretag WHERE godkannd = 2 AND ($var OR $split) ORDER BY foretag LIMIT $from_records,$max_per_page");

Problemet är att den hämtar informationen även om godkannd inte är 2.

Om villkoret i $split uppfylls spelar det enligt din originalfråga ingen roll vad godkannd har för värde.

Medlem sedan juni 20006 032 inlägg
#3

Mmm, det verkar funka.

Tycligen så att jag tänker helt fel. Trodde att AND gjorde att godkannd måste uppfyllas och att $var eller $split uppfylls.

Medlem sedan juni 200032 969 inlägg
#4

Eftersom AND binder hårdare än OR tolkas din WHERE-sats som:

Antingen måste godkannd vara två samtidigt som villkoret $var uppfylls, eller så går det fint om villkoret $split uppfylls.

Medlem sedan juni 20006 032 inlägg
#5

Ok det skulle ju vara
Antingen måste godkannd vara två samtidigt som villkoret $var eller $split uppfylls

r/ så ditt förslag funkar inte helt som jag tänkt mig men jag jobbar vidare på det. :)

Medlem sedan juni 200032 969 inlägg
#6

Ja, precis, och då måste du knyta ihop dina eller-villkor med parentes.

Om du var en databasmotor, hur skulle du tolka frågan?
De två första villkoren tillsammans, eller det första och ett av de två andra? Varför? Ska databasmotorn gissa? :)

edit:

r/ så ditt förslag funkar inte helt som jag tänkt mig men jag jobbar vidare på det.

Det borde det göra. Men det beror som sagt självklart på hur den egentliga SQL-frågan ser ut, dvs vad $var och $split innehåller. Skriv alltid ut färdig SQL-fråga för felsökning.

mvh

128 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)