Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jaka różnica pomiędzy mysql_fetch_array a mysql_num_rows?
Forum PHP.pl > Forum > Przedszkole
Rysh
Na studiach trzeba było wybrać sobie jakiś projekt na zaliczenie, więc wybrałem sobie napisać pewien skrypcik w php (z mysql). I tak jestem już w sumie za połową, jednak zorientowałem się, że na forach raczej użytkownicy używają funkcji mysql_fetch_array() do pobierania danych z bazy, ja natomiast w swoim projekcie używam mysql_num_rows() a następnie mysql_result() do pobierania danych. Czy moja metoda jest niepoprawna? Niebezpieczna?

Przykładowe zapytanie którego używam (okrojone do minimum):
  1. $zapytanie = mysql_query("SELECT * FROM players");
  2. $wynik = mysql_num_rows($zapytanie);
  3. for ($i = 0 ; $i < $wynik ; $i++) {
  4. $name_players = mysql_result($zapytanie,$i,"name");
  5. echo "$name_players <br />";
  6. }


Jak to jest natomiast z mysql_fetch_array?
Z góry dziękuje za odpowiedź.
piotrooo89
zwracają inne rodzaje tablic z wynikami zapytań do bazy danych.
thek
Najprościej zobaczysz różnicę w jeden sposób... Weź użyj funkcji
mysql_fetch_row
mysql_fetch_array
mysql_fetch_assoc
i w każdym z przypadków to co zwróci wyświetl w var_dump lub print_r smile.gif To co robisz Ty też jest prawidłowe ale nieoptymalne i nawet w manualu odradza się używanie mysql_result przy obróbce większej ilości wyników. Jest to bowiem wolniejsze. Daje większa swobodę wyboru, ale kosztem wydajności.
Mysql_query zwraca bowiem coś, co można przyrównać do tablicy 2-wymiarowej. Pierwsza liczba określa wiersz wyniku, a druga nazwę kolumny lub jego offset (czyli innymi słowy numer kolumny). Stosując mysql_result musisz podać oba, czyli wiersz i kolumnę by określić, która komórkę pobrać, ale trwa to trochę dłużej niż pobranie z wyniku całego wiersza, a potem tylko konkretnej wartości. Daje się to zauważyć gdy w jednej iteracji pętli chcemy pobrać kilka wartości. Mysql_result za każdym razem leci przez całą "macierz", podczas gdy wersje "fetch'owane" tylko po tym jednym pobranym wierszu. Myślę, że teraz zrozumiałe to dla Ciebie.
Rysh
Przetestowałem już wiem na jakiej zasadzie działają. Teraz wystarzy się przestawić z używania poprzedniej metody na jedna z podanych przez Ciebie.
Dziękuje za odpowiedz 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.