![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 90 Pomógł: 0 Dołączył: 29.12.2005 Skąd: Z krzaków Ostrzeżenie: (0%) ![]() ![]() |
Posiadam baze z tabela ktora ma okolo 20 tysiącami rekordów ( niecałe 20 mb ).
Struktura tabeli ma 6 kolumn ( id, tytul, wersja, rozmiar, licencja, jezyk ) w kilku tysiącach wpisów, pomylone sa wartosci ...a dokladniej pozamieniane kolejnosci. np, prawidlowy wpis powinien wygladac tak: ID | TYTUL | WERSJA | ROZMIAR | LICENCJA | JEZYK 1 | tytul | 1.1 | 0.0 MB | free | PL a niektóre wpisy wygladaja np: ID | TYTUL | WERSJA | ROZMIAR | LICENCJA | JEZYK 1 | tytul | free | PL | 1.1| 0.0 MB albo jeszcze inaczej pola sa poprzestawianie (zupelnie losowo grupami, nie wiem z czego to wyniklem) . Chciałem napisac skrypt w phpie ktory wyswietli pierw wszystkie bledne wpisy a pozniej jakos bede je edytowal... Zauwazylem ze wszystkie bledne wpisy maja w tytule tekst 'pl' Wiec stworzylem petle z zapytaniem SELECT .... LIKE '%pl%' Kod while ($rekord = mysql_fetch_assoc(mysql_query("SELECT * FROM prog WHERE tytul LIKE '%pl%'"))) { echo $rekord['tytul'] . ' - ' . $rekord['wersja'] . ' - ' . $rekord['rozmiar']; } niestety wyswietlanie tego trwa w nieskonczonosc... skrypt na localhoscie na apachu muli i muli... po ponad 15 minutach wyswietlilo kilka wpisow... Odpaliłem z ciekawosci tez phpmyadmin... skorzystalem w tabeli z opcji szukaj... wpisalem %pl% i w ciagu 0,2 sek znalazlo wszystkie wpisy... jak to możlie ? Co robie źle albo może jak w ogóle powinienem się do tego zabrać ? Probowalem ustawic LIMIT co niestety nic nie daje (myslalem ze ograniczenie wynikow pomoze ). Natomiast PHPMyAdmin wyswietla nawet naraz wszystkie kilka tysiecy wpisow z like %pl% po odpowiedzi serwera w przeciagu niecalej sekundy i jedynie lekkiej zawieszce przegladarki na kilka sek ![]() Z góry dzieki za wszelkie porady i pomoc ![]() Ten post edytował Rafiki 18.11.2011, 22:07:03 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 350 Pomógł: 31 Dołączył: 23.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
sprawdź czy na pewno mysql_error() nic nie zwrócił - ogólnie to zapisał bym to w ten sposób;
Ogólnie miałbym wątpliwości co do Twojego zapisu - jeśli chodzi o kolejność najpierw mysql_query -> mysql_fetch_assoc. Poza tym nie dawałbym tego bezpośrednio w pętli - bo jestem pewien, że to właśnie zły zapis while generuje jakiś loop i cały czas muli Ci. W tej chwili wydaje mi się, że w ogólnym wyniku tak wygląda Twój kod:
no i oczywiście nie debugujesz zapytania (mysql_error()) - sprawdź ten kod co ja podałem. pozdro. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 23:42 |