Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql]Zapytanie w zależności od wyniku
OlgaG
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 8.04.2007

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


Mam następujący problem:

mam dwa rozbudowania zapytania do bazy danych:
  1. <?php
  2. $query-str= "SELECT... ";
  3. $query-str1= "SELECT... ";
  4.  
  5. //korzystam z mysqli
  6.  
  7. $result = $conn->query($query_str);
  8.  
  9. $result1 = $conn->query($query_str1);
  10. ?>


Chciałabym pobierać wyniki drugiego zapytania za pomocą fetch_assoc(), ale tylko jeżeli z pierwszego zapytania mam pusty wynik. Robię to następująco:

  1. <?php
  2. //najpierw obsługa błędów
  3. if($result === FALSE or $result1 === FALSE)
  4. {
  5. $errno = $conn->errno;
  6. $errmsg = $conn->error;
  7.  
  8. echo "Niestety nie udało się wylosować bloga z kategorii klienta dla tego artykuł
    u:($errno) $errmsg>br />\n"
    ;
  9. }
  10.  
  11. //jeśli wszystko jest ok
  12. else
  13. {
  14. //jeżeli pierwsze zapytanie nie zwróciło pustego wyniku
  15. while(($row_data = $result->fetch_assoc()) !== NULL)
  16. {
  17. //tutaj instrukcje
  18.  
  19.  }
  20. //jeżeli pierwsze zapytanie zwróciło pusty wynik
  21. while(($row_data = $result->fetch_assoc()) == NULL){
  22. while($row_data1 = $result1->fetch_assoc()){
  23.  
  24. //tutaj instrukcje
  25.  }
  26.  }
  27. }
  28. ?>



Problem w tym, że przeglądarka miele skrypt i w końcu go przerywa, bo przekroczony jest limit czasu. Skrypt nie chce się wykonać tylko jeżeli pierwsze zapytanie zwraca pusty wynik, czyli gdy skrypt przechodzi do pętli while w while . Chyba coś przekombinowałam (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif)

Można jakoś inaczej zapisać tę instrukcję warunkową tak, by najpierw sprawdzać czy pierwsze zapytanie zwraca wynik puty, a jeśli tak to dane pobiera z 2 zapytania?

Dzięki za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Cytat(franki01 @ 3.01.2008, 16:18:35 ) *
Sprobuj w warunkach petli zamiast NULL, wstawic false, bo raczej taka wartosc jest zwracana w przypadku porazki.

EDIT: W dwoch petlach, zebys nie przeoczyl (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

.. to po pierwsze a
po drugie trochę zakręciłaś z tymi pętlami,
po trzecie nie masz poprawnego warunku w trzeciej pętli, przez co się pewnie zapętla skrypt,

lepiej spróbuj tak, jest szybciej i czytelniej:
  1. <?php
  2. //jeżeli pierwsze zapytanie nie zwróciło pustego wyniku
  3. $isFirstResult = false;
  4. while(($row_data = $result->fetch_assoc()) !== false)
  5. {
  6. $isFirstResult = true;
  7. //tutaj instrukcje
  8. }
  9. //jeżeli pierwsze zapytanie zwróciło pusty wynik
  10. if ( !$isFirstResult ){
  11. while( ($row_data1 = $result1->fetch_assoc()) !== false ){
  12.  //tutaj instrukcje
  13. }
  14. }
  15. ?>


Ten post edytował Cezar708 3.01.2008, 16:23:15
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: 10.10.2025 - 16:47