Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] mysql_fetch_array nie zwraca wielowym
Forum PHP.pl > Forum > Przedszkole
Luke_Star
napisałem funkcje do pobierania danych:
  1. <?php
  2. function getProvinces() {
  3. $sql="SELECT * FROM `users` WHERE `UID_user`='".$_SESSION['UID_u']."'";
  4. $sql=mysql_query($sql);
  5. $sql=mysql_fetch_array($sql);
  6. return $sql;
  7. }
  8. ?>


Niestety to co pokazuje print_r nie wygląda mi na tablice wielowymiarową.

  1. <?php
  2. (
  3. [0] => 1
  4. [ID] => 1
  5. [1] => 1
  6. [L_c] => 1
  7. [2] => 1
  8. [L_R] => 1
  9. [3] => 1
  10. [L_p] => 1
  11. [4] => 1
  12. [UID_u] => 1
  13. [5] => 1
  14. [UID_p] => 1
  15. [6] => 1171574269
  16. [T_pointer] => 1171574269
  17. [7] => Ibelin
  18. [Name] => Ibelin
  19. )
  20. ?>


a gdy próbuje wynik przedstawic za pomocą funkcji for:

  1. <?php
  2. for ($i=1; $i<=$int; $i++) {
  3. $this->output.="<option value='".$provinces["UID_p"][$i]."'>".$provinces["Name"][$i]."</option>";
  4. }
  5. ?>


gdzie $int to ilość znalezionych pól. Efekt jest taki że zamiast pokazać druga wartośc z podtablicy Name uzyskuje tylko (w wypadku gdy owa wartość wynosi Ibelin) literke e. Co jest nie tak? Bo for buduje mi poprostu select jeden za drugim tak ze IBELIN pisze pionowo (tj. kazda literka jako nowa opcja). Pomożecie bo ja sie juz chyba poddaje.

pomoże ktoś?
nospor
Przeciez mysql_fetch_array($sql) zwraca tablice jednowymiarową, czego ty oczekiwales? Zajrzyj do manuala anie sie dziwisz tongue.gif
Luke_Star
hmm tak zauważyłem to w końcu... uzyłem wiec funkcji mysql_fetch_assoc(). Teraz tablica wygląda o wiele lepiej jednak pojawił sie nastepny problem zapytanie
  1. SELECT * FROM `users` WHERE `UID_user`='1'


po wykonaniu i potraktowaniu mysql_fetch_assoc() zwraca tylko jeden wynik, a w tablicy powinny byc dwa. Zapytanie jest poprawne bo testowałem je w phpMyAdmin. Może tego być jakis konkretny powód?
tomaszdurka
Uprzejmie zwraacam się z prośbą o wkładanie trochę więcej wysiłku w znalezienie rozwiązania na problem zanim założy się wątek na forum.
Ja też kiedyś zaczynałem w PHP i MySQL, ale wystarczył 5-stronny kurs MySQL, aby zrozumieć to o co pytasz i prawdopodobnie przeczytanie jego zajęło mniej niż pisanie tego posta.


Odpowiedź na pytanie.

Jeśli zapytanie takie jak
  1. SELECT * FROM `users` WHERE `UID_user`='1'

zwraca ci dwa rekordy to musisz dwa razy wywołać mysql_fetch_row/mysql_fetch_assoc/mysql_fetch_array

Jeśli chcesz pobrać wszystkie rekordy z zapytania musisz przejść jeden po drugim aż do końca - czyli aż zwrócą false jako wynik.

np.:
  1. <?php
  2. while ($row = mysql_fetch_assoc($result)) {
  3.  echo $row["userid"];
  4.  echo $row["fullname"];
  5.  echo $row["userstatus"];
  6. }
  7. ?>


Więcej na http://pl.php.net/manual/en/function.mysql-fetch-assoc.php
Luke_Star
Rozumiem... widać ogromny błąd w moim sposobie myślenia. Dziekuje za zwrócenie uwagi
sanchoo
  1. <?php
  2.  
  3.  $link = mysql_pconnect('localhost', 'sanchoo_sanchoo', 'XYZ')
  4.  or die('Nie można się połączyć: ' . mysql_error());
  5.  mysql_select_db("sanchoo_newsy");
  6.  
  7.  
  8.  
  9.  $zapytanie = "CREATE TABLE nba (id char(3) NOT NULL, imie char(30), lata char(3), punkty char(3), mistrzostwa char(3), PRIMARY KEY(id))";
  10. $wykonaj = mysql_query($zaptanie);
  11.  
  12. $zapytanie = "INSERT INTO nba VALUES(Jordan, 13, 32, 6)";
  13. $wykonaj = mysql_query($zaptanie);
  14.  
  15. $query = "SELECT * FROM nba";
  16. $result = mysql_query($query);
  17. $row = mysql_fetch_array($result);
  18. echo '<pre>';
  19. print_r($tablica);
  20. echo '</pre>';
  21.  
  22.  
  23. ?>


  1. <?php
  2. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/sanchoo/public_html/test/test.php on line 25
  3. Table 'sanchoo_newsy.nba' doesn't exist
  4. ?>


...jakos zle tworze tabele??... zdaje sobie sprawy ze to pewnie jakis banal... i zaraz dostane zrype winksmiley.jpg ... ale mimo wszystko bede wdzieczny biggrin.gif
nospor
o zgrozo....
Cytat
$zapytanie = "CREATE TABLE nba (id char(3) NOT NULL, imie char(30), lata char(3), punkty char(3), mistrzostwa char(3), PRIMARY KEY(id))";
$wykonaj = mysql_query($zaptanie);

$zapytanie = "INSERT INTO nba VALUES(Jordan, 13, 32, 6)";
$wykonaj = mysql_query($zaptanie);

Przyjrzyj sie nazwą, ktore pogrubilem... tongue.gif
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.