366 PHP i MySQL dla każdego
W przypadku zapytań typu SELECT funkcja mysql_query zwraca identyfikator zasobów, który może zostać następnie użyty do odczytu danych zwróconych przez zapytanie. Istnieje kilka funkcji odczytujących takie dane, najpopularniejsze to mysql_fetch_row i mysql_fetch_array. Pomocna może być także funkcja mysql_num_rows, która pozwala na określenie, ile wierszy znajduje się w wynikach zapytania.
Każde wywołanie funkcji mysql_fetch_row zwraca kolejny wiersz z tabeli będącej wynikiem zapytania. Dane zwracane są w tablicy, w której kolejne komórki zawierają dane z kolejnych kolumn tabeli wynikowej. Jeśli zostaną odczytane wszystkie wiersze, funkcja zwraca wartość false. Oznacza to, że wszystkie wyniki zapytania mogą zostać odczytane w pętli while o schematycznej postaci:
while($arr - mysql_fetch_row($result)){
//instrukcje przetwarzające wyniki
gdzie arr to tablica, do której będą zapisywane dane z kolejnych wierszy, a result — zmienna zawierająca identyfikator zasobów zwrócony przez funkcję mysq1_query. Drugi wariant to użycie funkcji rnysqł_num_rows do pobrania liczby wierszy z tabeli wynikowej i pętli typu for. Taka konstrukcja miałaby schematyczną postać:
$count - mysql_num_rows($result): for($i - 0: $i < Scount: $i++){
$arr - mysql_fetch_row($result):
//instrukcje przetwarzające wyniki
Funkcja mysql_fetch_array działa podobnie, zwraca jednak tabelę asocjacyjną, w której kluczami są nazwy kolumn tabeli zwróconej przez zapytanie.
Zobaczmy najpierw, jak w praktyce odczytać dane z wybranej tabeli, wykorzystując do tego celu funkcję mysql_fetch_row. Niech będzie to wykorzystywana w poprzednim rozdziale tabela Książki zbazy Księgarnia. Odpowiedni kod jest widoczny na listingu 13.4.
Listing 13.4. Odczytanie zawartości tabeli_
<htm1>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> </head>
<body>
<?php
if (!$db_lnk - @mysql_connect(”localhost". “php". "test")){
echo('Wystąpił błąd podczas próby połączenia z serwerem MySQI____<BR>'):
exit;
i f(!@mysql_select_db('księgarnia’)) { echoCWystąpił błąd podczas wyboru bazy danych: Ksiegarnia<8R>'): 0mysqł_closeO; exit: