Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Zapytanie SELECT i opcja BETWEEN, działanie na zmiennych
TheaSiX
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

Ostrzeżenie: (0%)
-----


Wprawdzie rozwiązałem już problem, o których chciałem wcześniej pisać (innym sposobem), to nadal mam niejasną sprawę do jednej rzeczy:

Staram się tworzyć coraz bardziej skomplikowane zapytanie do mojej bazy danych, aby się podszkolić i zyskać na czasie etc.

Chciałem sprawdzić dwa pola w jednej tabeli. Są to daty, ale (mój błąd - wiem) pola te są varchar a nie date, datetime czy timestamp. Mimo to chciałem wyświetlić wszystkie rekordy, które mieszczą się w danym przedziale czasowym. Na początku myślałem, że z powodu typu pola w tabeli coś może nie działać, ale poniższe zapytanie przyniosło oczekiwane rezultaty:

  1. <?php
  2. $sql = "SELECT id, purchase_date FROM products WHERE purchase_date BETWEEN '01.04.2009' AND '16.04.2009'";
  3. ?>


Jednak przez dwie godziny nie mogłem pojąć dlaczego nie działa zapytanie następujące:

  1. <?php
  2. $date_a = "01.04.2009";
  3. $date_b = "16.04.2009";
  4.  
  5. $sql = "SELECT id, purchase_date FROM products WHERE purchase_date BETWEEN '$date_a' AND '$date_b'";
  6. ?>


Powyższe zapytanie spowoduje wyświetlenie wszystkich rekordów tak jakby nie było w ogóle konstrukcji WHERE...

Próbowałem różnych sposobów(konwersja typu zmiennych, cudzysłowa zamiast apostrofów). Jednak nie znalazłem żadnego rozwiązania. Byłbym wdzięczny gdyby ktoś rozjaśnił mi sytuację (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował TheaSiX 21.04.2009, 21:17:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
TheaSiX
post
Post #2





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

Ostrzeżenie: (0%)
-----


Rozwinę swój przykład. Mam listę z której można wybrać dany miesiąc. Później metodą POST przesyłam to do kodu, który ma za zadanie wyciągnąć dane tylko z tego miesiąca. Oto schemat w jaki buduję zapytanie:

  1. <?php
  2. $month = $_POST["month"] //powiedzmy, że przesyłam maj czyli $month = 05
  3.  
  4. $first = "01.";
  5. $last = "31.";
  6. $year = ".2009";
  7.  
  8. $date_a = $first.$month.$year; //01.05.2009
  9. $date_b = $last.$month.$year; //31.05.2009
  10.  
  11. $sql = "SELECT id, purchase_date FROM products WHERE purchase_date BETWEEN '$date_a' AND '$date_b'";
  12. ?>


Proszę o nie komentowanie samego sposobu. Wiem, że może wydawać się on dziwny i bardzo lamerski. Zmieniłem już wszystko, ale nadal chciałbym znaleźć wytłumaczenie dlaczego powyższy kod nie chce działać..

Ten post edytował TheaSiX 21.04.2009, 20:09:04
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 18:04