Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z funkcjami do obsługi bazy danych
Forum PHP.pl > Forum > PHP
Diwi
Zrobiłem sobie niedawno system obługi bazy danych MySQL który zbudowany jest na wbudowanych funkcjach php do obsługi w/w bazy.

Przykładowe 3 funkcje wyglądają tak:

  1. <?php 
  2. function pytanie($zapytanie) {
  3.  
  4. $r = @mysql_query($zapytanie, $this->connect);
  5.  
  6.  
  7. if ($r) {
  8.  
  9. return $r;
  10.  
  11.  }
  12.  
  13.  elseif (!$r) {
  14.  
  15. echo '<br />Błąd zapytania SQL: '.mysql_errno().' : '.mysql_error();
  16. return FALSE;
  17.  
  18.  } 
  19.  
  20. }
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  /* function pobierz_rekordy */
  27.  /* funkcja pobiera rekordy do tablicy */
  28.  
  29.  function pobierz_rekordy($zapytanie) {
  30.  
  31.  $r = @mysql_fetch_assoc($zapytanie);
  32.  
  33.  if ($r) {
  34.  
  35. return $r;
  36.  
  37. }
  38.  
  39.  elseif (!$r) {
  40.  
  41. echo '<br />Błąd przy pobieraniu rekordów: '.mysql_errno().' : '.mysql_error();
  42. return FALSE;
  43.  
  44. }
  45.  
  46.  
  47.  } /* function pobierz_rekordy(string) */
  48.  
  49.  
  50.  /* function ilosc_rekordow */
  51.  /* funkcja pobiera ilośc rekorów pobranych w wyniku wykonania zapytania SQL */
  52.  
  53.  ?>


No i nie wiem dlaczego gdy wywołuje sobie taki skrypcik:

  1. <?php
  2.  
  3. include('./db.php');
  4.  
  5. $db = new DB;
  6.  
  7. $result = $db->pytanie(&#092;"SELECT * FROM `news`\" );
  8.  
  9. while ($row = $db->pobierz_rekordy($result)) {
  10.  
  11. echo $row['id'].&#092;"n\";
  12.  
  13.  } 
  14.  
  15. ?>


Wyrzuca mi coś takiego:
Kod
6 8 9 10
Błąd przy pobieraniu rekordów: 0 :

No i nie wiem czemu wywala ten błąd sad.gif zapytanie jest dobre i wyświetla numery ID tak jak powinno ale nie wiem czemu wywala błąd :/

Czy wie ktoś gdzie tutaj jest błąd

Pozdrawiam
nospor
No i wszystko się zgadza. W pętli wywołujesz $db->pobierz_rekordy($result).
Zwraca ci pierszy rekord i znowu wywoluje tą metodę bo za pierwszym razem zwrócilo rekord. Za drugim razem już nie zwraca rekordu, bo zapewne masz tylko jeden rekord, wieć zwraca ci false bo już nie ma więcej rekordów.

W pobierz_rekordy nie musisz już wywalać bledu (bo to nie blad), skoro juz wywalasz w pytanie()
Diwi
Hm.. nie mam jednego rekordu smile.gif są 4 co widać po wyświetlanych ID. Wracając do tematu to nie ma sensu robić raportowania błędów dla funkcji mysql_fetch_array" title="Zobacz w manualu PHP" target="_manual() questionmark.gif

Pozdrawiam
nospor
No zgadza się. Masz 4 rekordy. Źle spojrzalem. Ale to nie zmienia faktu rzeczy, że przy próbie pobrania piątego rekordu, któego nie ma, zwraca ci false, a ty to komunikujesz jako błąd.
Przy pobieraniu rekordów nie będzie błędu, jeśli nie było go w zapytaniu.
Diwi
@nospor dzięki problem rozwiązany usunąłem wyświetlanie błędu przy funkcji pobierz_rekordy i wszystko jest OK smile.gif

Pozdrawiam
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.