Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wykonywanie danego zapytania X razy
Majkelo23
post 15.05.2012, 22:19:11
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

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


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 :/
Go to the top of the page
+Quote Post
Lorum3
post 15.05.2012, 23:52:52
Post #2





Grupa: Zarejestrowani
Postów: 86
Pomógł: 5
Dołączył: 10.12.2011
Skąd: Poznań

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


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.
Go to the top of the page
+Quote Post
bostaf
post 16.05.2012, 09:41:59
Post #3





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

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


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().
Go to the top of the page
+Quote Post
viking
post 16.05.2012, 09:49:17
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


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.


--------------------
Go to the top of the page
+Quote Post
johny_s
post 16.05.2012, 10:47:04
Post #5





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


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
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 19:52