Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dlaczego mysql_fetch_array() nie działa?
Forum PHP.pl > Forum > Bazy danych > MySQL
tzi
Mam taki kod w php

  1. <?php
  2.  
  3.  if(!mysql_connect($adres_serwera_bazy_danych, $uzytkownik_bazy_danych, $haslo_do_bazy_danych)) echo mysql_error();
  4.  else if(!mysql_select_db($nazwa_bazy)) echo mysql_error();
  5.  
  6.  $pytanie_sql=mysql_query('SELECT * FROM `zadania`');
  7.  
  8.  //zapytanie do bazy o uzytkownikow
  9.  $ile_wierszy = mysql_numrows($pytanie_sql);
  10.  for($nr_wiersza=1;$nr_wiersza<=$ile_wierszy;$nr_wiersza++)
  11. {
  12. $wynik = mysql_fetch_array($pytanie_sql);
  13. $id = $wynik['id'];
  14.  
  15. echo"<b>|$nr_wiersza|</b><br>id:$id<br>";
  16. }
  17.  
  18. ?>


a on do mnie mówi:

Cytat
|1|
id:4
|2|
id:
|3|
id:


dodam że w bazie naprawe są 3 rekordy i powinno być:

Cytat
|1|
id:4
|2|
id:6
|3|
id:7
mike
Po wynikach z bazy przechodzi sie inaczej niż Ty to robisz.

  1. <?php
  2.  
  3. if( ! mysql_connect( $strHost, $strUser, $strPass ) ) 
  4. {
  5. }
  6. else 
  7. {
  8. if( ! mysql_select_db( $strDb ) )
  9. {
  10. }
  11.  
  12. $strQueryResult = mysql_query( 'SELECT * FROM zadania' );
  13.  
  14. $intLicznik = 1;
  15. while( $arrRow = mysql_fetch_array( $strQueryResult ) ) 
  16. {
  17. echo '<b>|' . $intLicznik . '|</b><br />id:' . $arrRow[ 'id' ] . '<br />';
  18. $intLicznik++;
  19. }
  20.  
  21. ?>
tzi
Poprawiłem zgodnie z zaleceniami:
  1. <?php
  2.  
  3. $pytanie_sql=mysql_query('SELECT * FROM zadania');
  4.  
  5. $nr_wiersza = 1;
  6.  
  7. $ile_wierszy = mysql_numrows($pytanie_sql);
  8. echo "ilosc wierszy:$ile_wierszy<br>";
  9.  
  10. while($wynik = mysql_fetch_array($pytanie_sql))
  11. {
  12. $nr_zadania = $wynik['id'];
  13. $nr_wiersza++;
  14. echo"<b>|$nr_wiersza|</b><br>id zadania:$nr_zadania<br>";
  15. }
  16.  
  17. ?>


i otrzymałem następujący wynik:
Cytat
ilosc wierszy:3
|2|
id zadania:4


Jak we wcześniejszym przypadku tego też zupełnie nie rozumiem. Sprawdzałem zawartość bazy i wielkość zwracana przez funkcje mysql_numrows() jest prawidłowa. id kolejnych rekordów to 4,6,7.

Prosze, pomóżcie bo nie wiem co mam robić.

PRZEPRASZAM WSZYSTKICH za ten wątek.
To był mój błąd.
Sylvian
BTW jeśli już chcesz zliczać liczbę rekordów to radziłbym nie przyjmować wartości początkowej jako 1.
Jeśli zapytanie nie zwróci Ci żadnego rekordu to zmienna $nr_wiersza wciąż będzie wskazywać wartość 1. Dlatego poczatkowa wartośc powinna wynosić 0 (tylko inkrementacja powinna odbywać się wtedy jako pierwsza wewnątrz WHILE'a).

W tym przypadku nie robi to zbyt wielkiej różnicy ale w innym pewnie już tak.
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.