Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wykonywanie danego zapytania X razy
Forum PHP.pl > Forum > Przedszkole
Majkelo23
Dlaczego ten kod:

  1. else if ( $num > 1 )
  2. {
  3. $del = $num - 1;
  4. for ($i=0; $i<$del; $i++)
  5. {
  6. $sql = "DELETE FROM `sessions` WHERE session_ip = '".$user_ip."' AND session_user_id = ".$user_id." LIMIT 1";
  7. $result = mysql_query($sql)
  8. or die(sql_error($lang['Error_Delete_Values'], __LINE__, __FILE__));
  9. }
  10. }


się nie wykonuje? Konkretniej to zapytanie SQL. Powinno się wykonać tyle razy, ile nadmiaru mam wpisów w bazie. Nie wykonuje się wcale :/
Lorum3
Raz, zdebuguj sobie ten fragment i dowiesz się gdzie jest błąd, a dwa, sesji nie trzyma się w bazie. Poczytaj chociaż trochę o tym co robisz.
bostaf
Z tym kawałkiem kodu, który podałeś, można stwierdzić, że są dwa możliwe powody:
  1. Warunek $num > 1 nie jest spełniony
  2. warunek WHERE session_ip = '".$user_ip."' AND session_user_id = ".$user_id." w zapytaniu SQL nie jest spełniony.

Żeby się dowiedzieć, która z tych potencjalnych przyczyn jest powodem, wstaw jakieś echa, które pomogą Ci to ustalić, np:
  1. else if ($num > 1) {
  2. echo 'warunek $num > 1 spełniony: $num=' . $num; die();
  3. $del = $num - 1;
  4. for ($i=0; $i<$del; $i++) {
  5. $sql = "DELETE FROM `sessions` WHERE session_ip = '".$user_ip."' AND session_user_id = ".$user_id." LIMIT 1";
  6. $result = mysql_query($sql) or die(sql_error($lang['Error_Delete_Values'], __LINE__, __FILE__));
  7. }
  8. }

Jeśli po uruchomieniu kodu dostaniesz komunikat:
Kod
warunek $num > 1 spełniony: $num=2
(2 albo więcej), to znaczy, że to warunek w zapytaniu SQL nie jest spełniony, czyli że nie masz rekordów z określonym user_ip i session_user_id. W przeciwnym razie, kod się nie wykonuje bo $num <= 1.

Wykorzystaj tą metodę z echem do debugowania. Przydatna też może być funkcja var_dump().
viking
Cytat(Lorum3 @ 16.05.2012, 00:52:52 ) *
Raz, zdebuguj sobie ten fragment i dowiesz się gdzie jest błąd, a dwa, sesji nie trzyma się w bazie. Poczytaj chociaż trochę o tym co robisz.


Z ciekawości. Gdzie w takim razie się trzyma?

W tym przypadku nie bardzo widzę po co ta pętla ale możesz się zainteresować konstrukcją IN() albo podzapytaniem w delete.
johny_s
Cytat(Lorum3 @ 15.05.2012, 22:52:52 ) *
sesji nie trzyma się w bazie

ta? od kiedy?

tyle ze wygodniej zrobic to za pomoca wbudowanych mechanizmow php

http://www.php.net/manual/en/class.sessionhandler.php
http://www.php.net/manual/en/function.sess...ave-handler.php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.