Forum und email
mysql_fetch_array

mysql_fetch_array

(PHP 3, PHP 4, PHP 5)

mysql_fetch_array --  Zapisuje wiersz wyniku w tablicy asocjacyjnej, numerycznej lub w obu

Opis

array mysql_fetch_array ( resource wynik [, int typ_wyniku] )

Zwraca tablicę zawierającą pobrany wiersz, lub FALSE jeżeli nie ma więcej wierszy w wynik.

mysql_fetch_array() jest rozszerzoną wersją mysql_fetch_row(). Oprócz zapisywania danych w indeksach numerycznych, zapisuje je też w indeksach przyporządkowujących (asocjacyjnych), używając nazw pól jako kluczy.

Jeżeli dwie lub więcej kolumn wyniku ma te same nazwy, ostatnia kolumna będzie brana pod uwagę. Dostęp do innych kolumn o tej samej nazwie jest możliwy jedynie przez indeksowanie numeryczne lub przez stworzenie aliasa. Po stworzeniu aliasa nie można już odwoływać się do danej kolumny używając jej prawdziwej nazwy (w tym przykładzie używając 'pole').

Przykład 1. Zapytanie z powtarzającymi się nazwami pól

select table1.field as foo table2.field as bar from table1, table2

Godne uwagi jest to, że użycie mysql_fetch_array() nie jest znacząco wolniejsze od użycia mysql_fetch_row(), a jest bardziej funkcjonalne.

Opcjonalny drugi argument result_type w funkcji mysql_fetch_array() jest stałą i może przyjmować następujące wartości: MYSQL_ASSOC, MYSQL_NUM i MYSQL_BOTH. Tę funkcjonalność dodano w PHP 3.0.7. Wartością domyślną jest MYSQL_BOTH.

Używając MYSQL_BOTH otrzymasz tablicę indeksowaną zarówno asocjacyjnie jak i numerycznie. MYSQL_ASSOC dostarczy tablicy indeksowanej tylko asocjacyjnie (jak w mysql_fetch_assoc()), natomiast MYSQL_NUM indeksowanej tylko numerycznie (jak w mysql_fetch_row()).

Przykład 2. mysql_fetch_array z MYSQL_NUM

<?php
mysql_connect
('localhost', 'uzytkownik', 'haslo') or
    die(
'Nie można się połączyć: ' . mysql_error());
mysql_select_db('baza');

$result = mysql_query("SELECT id, nazwa FROM tabela");

while (
$row = mysql_fetch_array($result, MYSQL_NUM)) {
    
printf ("ID: %s  Nazwa: %s", $row[0], $row[1]);  
}
mysql_free_result($result);
?>

Przykład 3. mysql_fetch_array z MYSQL_ASSOC

<?php
mysql_connect
('localhost', 'uzytkownik', 'haslo') or
    die(
'Nie można się połączyć: ' . mysql_error());
mysql_select_db('baza');

$result = mysql_query("SELECT id, nazwa FROM tabela");

while (
$row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    
printf ("ID: %s  Nazwa: %s", $row["id"], $row["nazwa"]);  
}
mysql_free_result($result);
?>

Przykład 4. mysql_fetch_array z MYSQL_BOTH

<?php
mysql_connect
('localhost', 'uzytkownik', 'haslo') or
    die(
'Nie można się połączyć: ' . mysql_error());
mysql_select_db('baza');

$result = mysql_query("SELECT id, nazwa FROM tabela");

while (
$row = mysql_fetch_array($result, MYSQL_BOTH)) {
    
printf ("ID: %s  Nazwa: %s", $row[0], $row["nazwa"]);  
}
mysql_free_result($result);
?>

Patrz także: mysql_fetch_row(), mysql_fetch_assoc().