Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie bez wyniku
Forum PHP.pl > Forum > Przedszkole
miccom
Witam serdecznie smile.gif


Jeśli zadam pytanie do bazy danych a nie ma danego rekordu to cały system się wiesza...
Jak ominąć ten problem?

  1. $baza->query("select * from tabela where id='.$id_rekordu.' ");
  2. $liczba_wierszy = $result->num_rows;
  3. while ($row = $result->fetch_assoc() ) {
  4. $konflikt=$baza->query('select * from tabela_2 where id_2='.$row['id_2'].'');
  5. $konflikt2=$konflikt->fetch_assoc();
  6. //dalsza obróbka danych
  7.  
  8. }


Jak nic nie znajdzie, to kolejne zapytanie zatrzymuje wykonywanie kodu, ale otrzymuję potem komunikat BAD GATEWAY...


Proszę o pomoc.
com
hmm
  1. if($liczba_wierszy) // to do
miccom
ok, więc każde zapytanie muszę odpytywać o ilość rekordów?
w tym przykładzie jest mi to potrzebne, ale w niektórych nie muszę znać ilości...
Turson
Więc po co pobierasz ilość wierszy, jeżeli ich nie sprawdzasz
miccom
Cytat(Turson @ 26.02.2014, 23:06:21 ) *
Więc po co pobierasz ilość wierszy, jeżeli ich nie sprawdzasz


W tym ok, ale co zrobić jeśli nie pobieram?

Np. gdybym dał tak:


  1. $baza->query("select * from tabela where id='.$id_rekordu.' ");
  2. while ($row = $result->fetch_assoc() ) {
  3. $konflikt=$baza->query('select * from tabela_2 where id_2='.$row['id_2'].'');
  4. $konflikt2=$konflikt->fetch_assoc();
  5. //dalsza obróbka danych
  6.  
  7. }
Turson
Sprawdzając czy są jakieś wyniki lub nie możesz wyświetlić stosowny napis "Brak wyników"

Cytat
W tym ok, ale co zrobić jeśli nie pobieram?

Nie rozumiem w jakim kontekście pytasz
miccom
Czy za każdym rem muszę robić taki schemat:

  1. $result=$baza->query("select * from tabela where id='.$id_rekordu.' ");
  2. [b]$liczba_wierszy = $result->num_rows;
  3. if($liczba_wierszy>0){[/b]
  4. while ($row = $result->fetch_assoc() ) {
  5. $konflikt=$baza->query('select * from tabela_2 where id_2='.$row['id_2'].'');
  6. $konflikt2=$konflikt->fetch_assoc();
  7. //dalsza obróbka danych
  8.  
  9. }
  10.  
  11.  
  12. }
com
nie nie musisz, dałeś taki przykład, no to dałem Ci jedno z możliwych rozwiązań dla tego konkretnego przypadku, które jak teraz patrze w zasadzie nawet nie jest potrzebne bo przecież $result->fetch_assoc() jeśli zwróci null to pętle Ci się itak nie wykona.. pomijając fakt że $result to ja wgl tu w tym kodzie nie widzę wink.gif
miccom
NO to co w takim razie muli do tego stopnia, że po minucie wywala BAD GATEWAY?
com
no to masz gdzieś napisane coś co się zapętla, lub jakieś inne cuda nwm mam Ci powróżyć przecież mam fragment tylko kodu z którego nic nie wynika..
miccom
ale nawet ten fragment zamula...
com
no to zdebuguj sobie ten kod i sam dojdziesz gdzie tak obciążasz serwer, że się sypie.. jak dodałeś ten warunek to jest to samo? jeśli tak to błąd jest gdzieś indziej jeśli nie to pewnie kwestia //dalsza obróbka danych wink.gif
miccom
Albo jeszcze inaczej...

Jak zmienię wszystko na zwykłe połączenia mysql to nic nie zamula...
Dopiero jak wrzucę obiektowe zapytania to już się robi młynek, i tylko wtedy kiedy nie ma rekordu o który pytam...

Generalnie jak zapytam obiektowo o cokolwiek w bazie a np. machnę się z literówką.. to wskazuje że to nie jest obiekt... i zamula...
com
no zamula bo się gdzieś zapętla, a czemu sie zapętla bo masz gdzieś błąd..
miccom
A dodawać zgłaszanie do wszystkich zapytań też niewiele da bo większość mam zapytań ajaxowych...
chyba że zapis do pliku z alertami...

Jak to rozwiązać?

Nie ukrywam że mam zapytania wielopoziomowe które odpytują bazę wszerz i wzdłuż, bardzo dziwnymi zapytaniami.
com
może byś tak dał kod, bo co ja mam rozwiązać jak tego nie widzę..
Apropo tego fragmentu, jesli 1 zapytanie nie zwróci Ci rekordu to masz tak jak tu:
http://ideone.com/0zPOm9

Wiec to co tam jest przecież wgl się nie wykona, a zamula Ci z innego powodu, a skoro odpytujesz to ja ajaxem to pewnie przez to, że blednę request też chcesz wyświetlać..

Cytat
Nie ukrywam że mam zapytania wielopoziomowe które odpytują bazę wszerz i wzdłuż, bardzo dziwnymi zapytaniami.


Mam wrażenie że dało by się to zoptymalizować wink.gif może czas zrefakturyzować kod biggrin.gif
miccom
Wiesz... to skomplikowany kod, i aby go "zref...." cokolwiek to znaczy to trzeba by się zagłębić mocno w projekt...

Pozostaje kwestia finansów, bo nikt nie "zref..." cokolwiek to znaczy za darmo, a i nie mam chęci pokazywać kodu bo ucząc się programowania zostałem uczulony na "nie pokazywanie" kodu dla potencjalnych hakierów właśnie na forach dla hakierów smile.gif .

Kółko się zamyka, brak kasy= samodzielne próby naprawy = zamulanie.

Gdyby było siano= zatrudnienie kodera = brak zamulania.
I jak nie patrzę, te równania nie chcą się inaczej ułożyć...
bo mi pasowałoby zamulanie = zatrudnienie kodera = siano

No ok, ale jak nie wyświetlać danych których nie ma?

Wykonuję pewne działania, zapisy do bazy danych, usuwanie rekordów, dodawanie itp... a przez ajax przesyłam:
  1. echo json_encode($zdarzenie);


i w js mam np.
  1. $.ajax({
  2. async: false,
  3. type : "GET",
  4. dataType : "json",
  5. url : "../plik.php",
  6. data : "action=6",
  7. cache: false,
  8. success: function(dane_mess){
  9. $.blockUI({ message: '<div id="alert_window">'+dane_mess['alert']+'</div>' });
  10. setTimeout($.unblockUI, 1000);
  11. }
  12. });
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.