Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie do bazy - pobiera dane w phpMyAdmin, nie pobiera przez inny skrypt
wojckr
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 4
Dołączył: 6.05.2007
Skąd: Wrocław

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


Witam, mam taki oto problem:
Jest zapytanie SQL SELECT generowane przez skrypt PHP. Wysyłam to zapytanie do bazy funkcją mysql_query(). Mysql_num_rows() zwraca 0 rekordów; mysql_error() żadnego błędu - zapytanie powinno zwrócić dokładnie 1 rekord, a zwraca 0.
Dokładnie to samo zapytanie wygenerowane przez skrypt PHP wklejam w phpMyAdmin i phpMyAdmin jakoś pobiera 1 rekord z danymi (tak powinno być, bo dane są).

I teraz pytanie: dlaczego przez mój skrypt PHP to samo zapytanie pobiera 0 rekordów, a przez phpMyAdmin 1 rekord? (przecież phpMyAdmin to też skrypt PHP). Wszystko dzieje się na tym samym serwerze.

Z góry dzięki za odpowiedź.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wojckr
post
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 4
Dołączył: 6.05.2007
Skąd: Wrocław

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


Zapytanie wygląda tak:

  1. SELECT *
  2. FROM users
  3. WHERE
  4. users.login='abc'
  5. AND users.email='abc@example.com'
  6. AND SUBSTRING(MD5(CONCAT(users.b1,UNIX_TIMESTAMP(users.b2))),1,10) = '900cf37b94'


Tworzone jest tak:
  1. $user=$_GET['user'];
  2. $email=$_GET['email'];
  3. $token=$_GET['token'];
  4.  
  5. if (usernameOk($user) and emailOk($email) and preg_match('/\A[a-zA-Z\d]{10}\z/',$token)) {
  6. $sql='
  7. SELECT *
  8. FROM users
  9. WHERE
  10. users.login=\''.$user.'\'
  11. AND users.email=\''.$email.'\'
  12. AND SUBSTRING(MD5(CONCAT(users.b1,UNIX_TIMESTAMP(users.b2))),1,10) = \''.$token.'\'';
  13. $odp=mysql_query($sql);
  14. //...tutaj sprawdzanie $odp...
  15. }


Kod jest taki jak widać, chociaż mam wrażenie, że to nie zależy od tego jak wygląda zapytanie, ewentualnie może od tego, że wartości do zmiennych pobierane są z URLa(?).

--------------------
Problem znaleziony:
UNIX_TIMESTAMP(data) - tu leży problem, ta funkcja określa ilość sekund od 1970 UTC dla argumentu data, potem zmniejsza lub zwiększa tą ilość sekund, w zależności od zmiennej @@time_zone, która akurat w moim skrypcie jest ustawiana w czasie zimowym na UTC+1, a w letnim na UTC+2, natomiast w phpMyAdmin wartość @@time_zone jest inna i ogólnie tu leży problem.

Ten post edytował wojckr 9.04.2010, 08:07:22
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: 3.10.2025 - 23:07