![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 2 Dołączył: 30.11.2009 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 1 Dołączył: 4.02.2010 Skąd: Jasło Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj użyć mysql_num_rows
|
|
|
![]()
Post
#3
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 1 Dołączył: 2.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wroze z fusow, ze ten jedyny pasujacy rekord w Twojej tabeli
ma forum_id = 2 (IMG:style_emoticons/default/smile.gif) Nie dales nawiasow w swoim warunku, a AND ma wyzszy priorytet niz OR. Czyli wybierasz rekordy ktore maja status=0 i forum_id=2 ORAZ rekordy ktore maja forum_id=6 i status jakikolwiek. Sieknalem sie niedawno w ten sposob i wywalalo na strone piecdziesiat tysiecy rekordow, a mialo byc ze dwiescie (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Tu nie chodzi o to że AND ma wyższy priorytet. Jest błąd logiczny w zapytaniu na który zwróciłeś uwagę, chodź nie do końca o to chodziło. Zapytanie jest traktowane liniowo, od lewej do prawej. Jak widzi WHERE to ma warunek, ma być spełniony, jeżeli widzi AND, czyli koniunkcję to oba te warunki muszą być spełnione. Warunek WHERE jest nie prawdziwy gdy chodź jedno z nich jest nie prawdziwe. Następnie trafia na klauzulę OR, alternatywa dla warunku wcześniej, czyli interpretator języka SQL widzi to zapytanie w postaci warunku OR gdzie pierwszy element jest dwuczłonową koniunkcją.
Proste nie? Ten post edytował cojack 26.04.2010, 08:45:02 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:46 |