Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Zwracanie wynikow z bazy danych dziwna sytuacja
major697
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 7.08.2014

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


czesc pisze sobie taki maly skrypcik ktpory bd zwracal wyniki z bazy danych. mam takie małe pytanie dlaczego kiedy mam taka pętlę:

  1. while ($wyniki) {
  2. echo "<pre>";
  3. print_r($wyniki);
  4. echo "</pre>";
  5. }


to rzegladarka wyswietla mi tylko pierwszy rekord z bazy danych i to w dodatku an okraglo (musze zatrzymywac wczytywanie strony!) a gdy zmienie na:

  1. while ($wyniki = mysqli_fetch_array($rezultat)) {
  2. echo "<pre>";
  3. print_r($wyniki);
  4. echo "</pre>";
  5. }


to wszystko jest ok

Cały kod (działający):

  1. <?php
  2.  
  3. $nazwa_servera = 'localhost';
  4. $login = 'root';
  5. $pass = 'tajemnica';
  6. $bd = 'kurs_php';
  7.  
  8. $lacze = mysqli_connect($nazwa_servera, $login, $pass);
  9. $lacze_db = mysqli_select_db($lacze, $bd);
  10.  
  11. //var_export($lacze_db);
  12.  
  13. $zap = 'SELECT * FROM sprzedaz';
  14. $rezultat = mysqli_query($lacze, $zap);
  15. $wyniki = mysqli_fetch_array($rezultat);
  16.  
  17. while ($wyniki = mysqli_fetch_array($rezultat)) {
  18. echo "<pre>";
  19. print_r($wyniki);
  20. echo "</pre>";
  21. }
  22. ?>


oraz NIE działający:

  1. <?php
  2.  
  3. $nazwa_servera = 'localhost';
  4. $login = 'root';
  5. $pass = 'tajemnica';
  6. $bd = 'kurs_php';
  7.  
  8. $lacze = mysqli_connect($nazwa_servera, $login, $pass);
  9. $lacze_db = mysqli_select_db($lacze, $bd);
  10.  
  11. //var_export($lacze_db);
  12.  
  13. $zap = 'SELECT * FROM sprzedaz';
  14. $rezultat = mysqli_query($lacze, $zap);
  15. $wyniki = mysqli_fetch_array($rezultat);
  16. $wyniki = mysqli_fetch_array($rezultat);
  17.  
  18. while ($wyniki) {
  19. echo "<pre>";
  20. print_r($wyniki);
  21. echo "</pre>";
  22. }
  23. ?>


Ten post edytował major697 11.03.2016, 21:08:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
kapslokk
post
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Manual mówi: mysqli_result::fetch_array -- mysqli_fetch_array — Fetch a result row as an associative, a numeric array, or both
Funkcja zwraca jeden wiersz, a w obiekcie $rezultat przestawia wskaźnik na następny wiersz, tak aby przy kolejnym wywołaniu mysqli_fetch_array zwrócić kolejny.
Go to the top of the page
+Quote Post
major697
post
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 7.08.2014

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


Chodzi mi o samą pętlę while w niedziałającym kodzie w linii 16 jest zmienna $wyniki, następnie w pętli while w nawiasie podałem odwołanie do tej zmiennej i tu moje pytanie dlaczego nie działa ono prawidłowo tylko musiałem wpisać całe zapytanie tak jak w działającym kodzie w linii 17:

  1. while ($wyniki = mysqli_fetch_array($rezultat)) {
Go to the top of the page
+Quote Post
Popek231
post
Post #4





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 30.03.2012
Skąd: Bielsko-Biała

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


Jakbyś zastosował taki skrypcik:
  1. $i=0;
  2. while($wyniki = mysqli_fetch_array($rezultat)){
  3. echo 'Wiersz: '.$i.'<br>';
  4. while($row = $wyniki){
  5. echo 'Wartość: '.$row.'<br>';
  6. }
  7. echo '<hr>';
  8. $i++;
  9. }


wiesz co zawiera $row?
i dlaczego $row = $wyniki?

każdy wiersz byłby 'wzięty' do pętli, a potem w kolejnej pętli wyświetlamy wartości z danego wiersza.


$wyniki = mysqli_fetch_array($rezultat)
przedstawia wynik odpowiedzi z bazy danych MySQLi w zmiennej $rezultat w postaci tablicy, z której można wyczytać kolejne wartości,
$wyniki w pętli while zawiera aktualny indeks,
np. jeśli mysqli_fetch_array($rezultat) ma 5 wartości (0-4)
można odwoływać się:
$wyniki = mysqli_fetch_array($rezultat);
WYPISZ $wyniki[0];
WYPISZ $wyniki[1];
WYPISZ $wyniki[2];
WYPISZ $wyniki[3];
WYPISZ $wyniki[4];
ale pętla robi przełożenie na kolejny indeks za nas i my tylko operujemy na zmiennej $wyniki.
w wypadku MySQLi (MySQL też) $wyniki jest tablicą asocjacyjną, zawiera indeksy numeryczne od 0 oraz znakowe (nie wiem jak się to mówi profesjonalnie),
czyli można w Twoim kodzie się odwołać przez:
while ($wyniki = mysqli_fetch_array($rezultat)) {
echo "ID to: ".$wyniki['id'];
echo "ID to: ".$wyniki[0];
}
o ile pobrałeś z bazy komórkę o nazwie ID, która jest na pozycji 0.

jeśli coś nie jasno napisałem, odezwij się, wyjaśnię (IMG:style_emoticons/default/wink.gif)


ps.
a sam $rezulat nie zawiera takiej tablicy, przez co nie można tego użyć w pętli ( while($rezultat){} ).

Ten post edytował Popek231 13.03.2016, 13:43:59
Go to the top of the page
+Quote Post

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: 22.08.2025 - 13:25