background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

Kurs : Podstawy MySQL'a

 

Część 1

 

Wstęp

 

Instalacja, zapytania

 

Łączymy się z bazą danych

 

Nowa baza

 

Zagadnienia SQL

 

 

Część 2 
Prosta wyszukiwarka

 

Rozszerzamy wyszukiwarkę

 

Sortowanie wynikow

 

Analiza błedów

 

 

Część 3 
Mała rzecz

 

Kasowanie baz danych

 

Inny sposób

 

Informacje o tabeli 

 

 
 

Autor:  

Piotr Kuźmiński 

pk@php.pl

 / 

piotr.k@2com.pl

  

http://pk.help.pl

  

http://www.php.pl

 

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/index.html [2007-05-20 12:43:35]

background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

Podstawy MySQL'a (cz. 1) ] 

 
Wstęp 

MySQL jest chyba jednym z najpopularniejszych interface'ów języka SQL (Structured Query 

Language), charakteryzuje się ogromną elastycznością, jeszcze większą prędkością i co 

najważniejsze jest bardzo łatwy w obsłudze. 

Instalacja ( pod Win32 ) 

Instalacja nie sprawi najmniejszych problemów nawet 'zielonym' - wystarczy otworzyć zwykłym 

edytorem tekstu plik php3.ini (lub php.ini - w zależności od wersji PHP), następnie znaleźć linijkę ;

extension=php3_mysql.dll i usunąć średnik, który znajduje się na początku linii. W ten sposób 

będziemy mogli korzystać z dobrodziejstw MySQL'a na serwerze Apache. 

Zapytania 

Aby wykonać cokolwiek w swojej bazie należy wysłać do niej informacje, wszystkie informacje 

wysyłane są do bazy danych w postaci zapytań, do czego służy funkcja mysql_query(zapytanie)

Wszystkie zapytania wysyłamy w następujący sposób: 

$zaptanie="twoje zapytanie"; 

$wykonaj=mysql_query($zapytanie); 

Po takiej operacji zmienna $wykonaj będzie zawierać wartość TRUE, jeśli operacja powiedzie się, 

jeśli nie - zwróci wartość FALSE. 

Łączymy się z bazą danych 

Aby połączyć się z bazą danych używamy komendy: 

mysql_connect (nazwa_hosta[:port] [, użytkownik] [,hasło]); 

W praktyce oznacza to, że wymagana jest nazwa hosta - następnie opcjonalnie możemy wpisać 

nazwę użytkownika oraz jego hasło. Jeśli nie podamy nazwy hosta automatycznie nastąpi próba 

połączenia się z localhostem. Jeśli zabraknie nazwy użytkownika automatycznie zostaniemy 

zalogowani jako właściciel procesu baz danych, przeważnie właściciel nie ma ustawionego hasła, 

więc trzeci parametr nie jest wymagany. Poniższy przykład pokazuje jak połączyć się z serwerem 

mojserwer.pl jako użytkownik foo, z hasłem off

$sql = mysql_connect (mojserwer.pl, foo, off); 

Funkcja mysql_connect zwróci wartość TRUE, jeśli zakończy się sukcesem, jeśli nie powiedzie się - 

zwróci wartość FALSE. 

Jeśli zakończyłeś już operacje w swojej bazie należy się rozłączyć, co robi się funkcją mysql_close

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/pliki/1.html (1 of 4) [2007-05-20 12:43:37]

background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

(id_połączenia). Aby zakończyć połączenie, które zaprezentowałem powyżej należałoby 

zastosować komendę 'mysql_close' w następujący sposób: 

mysql_close($sql); 

Tworzenie nowej bazy oraz jej wybieranie 

Do stworzenia nowej bazy używamy komendy mysql_create_db(nazwa) np.: 

mysql_create_db("zawodnicy"); 

Samo stworzenie bazy nie oznacza, że właśnie na niej będziemy wykonywać operacje, dlatego 

musimy ją wybrać, co robimy komendą mysql_select_db(nazwa) np.: 

mysql_select_db("zawodnicy"); 

Od tej pory można już wykonywać różne operacje w bazie 'zawodnicy'. 

Zagadnienia SQL 

Bazę danych możemy stworzyć także za pomocą wyrażeń SQL w formie zapytania: 

$zapytanie="CREATE DATABASE zawodnicy"; 

$wykonaj = mysql_query($zaptanie); 

Gdy nasza baza jest już utworzona możemy zacząć wprowadzać dane, najpierw jednak trzeba 

utworzyć tabelę, robimy to wg następującego schematu składni SQL: 

CREATE TABLE nazwa_tabeli (nazwa1 typ1, nazwa2 typ2, PRIMARY KEY(nazwa_x)) 

Postarajmy się stworzyć tabelę według danego schematu: 

$zapytanie = "CREATE TABLE nba (id char(3) NOT NULL, imie char(30), lata char(3), punkty char

(3), mistrzostwa char(3), PRIMARY KEY(id))"; 

Rozpatrzmy powyższy przykład: klucz oznaczony jako PRIMARY KEY oznacza, że klucz ten jest 

kluczem głównym, a klucz główny nie może się powtarzać - w przypadku gdyby klucz główny się 

powtórzył po prostu rekord nie zostanie dodany do tabeli, klucz oznaczony jako NOT NULL nie 

może być pusty. 

Dostępnych jest kilka typów pól, niektóre z nich przedstawiam poniżej: 

char(x) - ciąg znaków o maksymalnej długości x, gdzie x nie może być większy od 255, 

blob - ciąg znaków o długości ograniczonej przez twoją pamięć, 

integer - liczba całkowita z zakresu od do , 

data - data w formacie DBMS (uwaga format odwrotny do normalnego: YYYY-MM-DD), 

year - rok, jeśli zostanie podany zły, jego wartość zmieni się w 0000, 

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/pliki/1.html (2 of 4) [2007-05-20 12:43:37]

background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

decimal(x, y) - liczba dziesiętna, gdzie x oznacza maksymalną liczbę cyfr, a y maksymalną 

liczbę cyfr po przecinku. 

Mamy już stworzoną tabelę, teraz trzeba coś do niej dodać, robimy to wg następującego 

schematu: 

INSERT INTO nazwa_tabeli VALUES (wartosc_pola1, wartosc_pola2, wartosc_pola3...) 

Nie zawsze musimy wypełniać wszystkich pól, a robi się to w następujący sposób: 

INSERT INTO nazwa_tabeli (nazwa_pola1, nazwa_pola2) VALUES (wartosc_pola1, wartosc_pola2) 

Teraz pora na przykład, załóżmy, że chcemy dodać do naszej tabeli nowego zawodnika, operacja 

ta wygląda tak: 

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

Po wykonaniu takiej operacji tabela 'nba' będzie już zawierać jednen rekord. Teraz kolejno 

możemy dodawać w ten sam sposób kolejne rekordy. 

Jeśli chcemy przeszukać naszą tabelę w poszukiwaniu jakiegoś konkretnego rekordu robimy to za 

pomocą komendy SELECT wg schematu: 

SELECT nazwa_pola FROM nazwa_tabeli WHERE warunek 

Oczywiście nazw pól możemy podać kilka, lub wszystkie - jednak zamiast tego po prostu 

wstawiamy znak gwiazdki (SELECT * FROM itd.), warunek może być bardzo złożony, ale to jest 

temat na kolejny artykuł. Załóżmy, że chcemy przeszukać naszą tabelę w poszukiwaniu zawodnika 

o nazwisku 'Pipen' robimy to w następujący sposób: 

$zapytanie = "SELECT imie FROM nba WHERE imie='Pipen'"; 

Funkcja zwróci wartość TRUE jeśli znajdzie w naszej tabeli Pipena, jeśli nie - FALSE. Pamiętaj 

jednak, że rozróżniane są wielkie i małe litery, dlatego 'Pipen' to nie to samo co 'pipen' czy 

'PIPEN'... 

Jeśli jakiś rekord jest już nie aktualny, lub po prostu źle wpisaliśmy dane, należałoby go 

zaktualizować, do czego służy komenda UPDATE: 

UPDATE nazwa_tabeli SET wartosc_pola WHERE warunek 

Powiedz my, że chcemy zmienić w naszej tabeli ile lat grał Jordan, robimy to tak: 

$zapytanie = "UPDATE nba SET lata=15 WHERE imie='Jordan'"; 

Teraz Jordan grał już 15, a nie tak jak wcześniej 13 lat. Jeśli jakieś dane z danej tabeli już nas nie 

interesują pozbywamy się ich komendą DELETE: 

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/pliki/1.html (3 of 4) [2007-05-20 12:43:37]

background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

DELETE FROM nazwa_tabeli [WHERE warunek] 

W powyższym przykładzie warunek wziąłem w nawias, ponieważ jeśli nie podamy warunku z tabeli 

zostaną wymazane wszystkie rekordy. W praktyce kasowanie prezentuje się następująco: 

$zapytanie = "DELETE FROM nba WHERE imie=Jordan"; 

Od tej chwili Jordana już nie ma w naszej tabeli zawodników nba. 

Jak wyświetlić wyniki przeszukiwania tabeli? 

Skoro poznaliście już podstawowe zagadnienia SQL'a to możemy przejść do bardziej 

zaawansowanych struktur - wyświetlanie wyników przeszukiwania tabeli. Wszystko odbywa się wg 

poniższego schematu: 

$zapytanie = "SELECT * FROM nazwa_tabeli"; 

$wykonaj = mysql_query($zaptanie); 

while($wiersz = mysql_fetch_array($wykonaj)) 

print "Pole pierwsze".$wiersz['pole1']."<br>"; 

print "Pole drugie".$wiersz['pole2']."<br>"; 

print "Pole trzecie".$wiersz['pole3']."<br>"; 

Wszystko to odbywa się dzięki komendzie 'mysql_fetch_array', której zadaniem jest pobieranie 

wierszy ze zbioru wyników i zwracanie jej w postaci tablicy. Oczywiście każda osoba znająca 

HTML'a i PHP zorientowała się, że zamiast pisać 'print' trzy razy, można by napisać tylko raz, ale 

napisałem tak dla przejrzystości kodu. 

 

Autor:  

Piotr Kuźmiński 

pk@php.pl

 / 

piotr.k@2com.pl

  

http://pk.help.pl

  

http://www.php.pl

 

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/pliki/1.html (4 of 4) [2007-05-20 12:43:37]

background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

Podstawy MySQL'a (cz. 2) ] 

 
Podczas poprzedniej lekcji dowiedzieliście się jak tworzyć bazy danych oraz jak w prosty sposób 

nimi zarządzać - teraz postaram się wam przedstawić bardziej zaawansowane struktury. 

Budujemy prostą wyszukiwarkę 

Na początku pierwszej lekcji wśród ogromnych zalet MySQL'a podałem m. in. łatwość jego obsługi 

- zawsze wydawało mi się, że wyszukiwarka jest strasznie trudną strukturą, żeby nie nazwać jej 

magiczną. Jak się okazuje wyszukiwarka jest niczym innym jak użyciem operatora SELECT (który 

poznałeś podczas poprzedniej lekcji) w połączeniu z operatorem LIKE. Tradycyjne użycie SELECT 

wygląda tak: 

SELECT nazwy_pol FROM nazwa_tabeli WHERE warunek 

Jeśli w warunku zastosujemy operator LIKE otrzymamy bardzo prostą wyszukiwarkę: 

SELECT nazwy_pol FROM nazwa_tabeli WHERE nazwa_pola LIKE '%szukane_wyrażenie%' 

Operator LIKE służy tutaj do przeszukiwania pól tekstowych w poszukiwaniu danego wyrażenia, 

znak procenta przed i po wyrażeniu odgrywa bardzo ważną rolę - powoduje dopasowanie 

dowolnych znaków przed i po danym wyrażeniu, spróbuję przedstawić to na przykładzie. 

Poszukiwane wyrażenie 'nik' (zakładając, że znak procentu znajduje się przed i po wyrażeniu tj. %

nik%): 

Pasuje do niego np.: konik, nikt, nikogo, komornik, nikotyna. Jeśli nasze wyrażenie zawierało by 

procent tylko na początku (%nik) wtedy pasowałyby 'konik' i 'komornik' i inne wyrazy kończące się 

na 'nik', ponieważ dopasowywane są tylko wyrazy zaczynające się dowolną liczbą dowolnych 

znaków a kończących się na 'nik'. Natomiast wyrazy 'nikogo', 'nikt', 'nikotyna' nie pasowałyby, 

ponieważ 'nik' powinno być końcem wyrazu. Sytuację odwrotną uzyskamy, jeśli znak procentu 

postawimy na końcu wyrażenia. 

Nawiązując do poprzedniej lekcji, podczas której stworzyliśmy tabelę z zawodnikami NBA, możemy 

np. przeszukać tabelę w poszukiwaniu wszystkich zawodników, w których imieniu i nazwisku 

występuje np. litera 'a'. Wyrażenie służące przeszukaniu takiemu wyglądałoby następująco: 

$zapytanie = "SELECT * FROM nba WHERE imie LIKE \"%a%\""; 

Równie dobrze możemy szukać wszystkich imion kończących się na 'a': 

$zapytanie = "SELECT * FROM nba WHERE imie LIKE \"%a\""; 

Lub zaczynających się literą 'a': 

$zapytanie = "SELECT * FROM nba WHERE imie LIKE \"a%\""; 

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/pliki/2.html (1 of 4) [2007-05-20 12:43:37]

background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

Taką samą wyszukiwarkę, a nawet dużo bardziej skomplikowaną i z większymi możliwościami 

można również napisać za pomocą wyrażeń regularnych SQL, jednak to jest temat na osobny 

artykuł. 

Rozszerzamy wyszukiwarkę 

Jak na razie nasze poszukiwania opierały się na wyszukiwaniu na tylko jednym warunku - jeśli 

jednak zechcemy wyszukać jakiejś danej, która zawiera więcej niż jeden warunek? W tym 

momencie z pomocą przychodzą nam dwa znane operatory z języka PHP 'AND' i 'OR' oraz dwa 

nowe 'BETWEEN' i 'IN'. 

AND (można również &&) - jest to operator, dzięki, któremu można stworzyć złożone warunki, 

jego schemat wygląda następująco: 

instrukcja WHERE warunek1 AND warunek2 

Funkcja zwróci wartość TRUE, jeśli obydwa warunki zostaną spełnione, jeśli jeden z nich lub oba 

nie zostaną spełnione funkcja zwróci wartość FALSE. 

OR (można również ||) - kolejny operator, dzięki, któremu można stworzyć złożone warunki, jego 

schemat wygląda następująco: 

instrukcja WHERE warunek1 OR warunek2 

Funkcja zwróci wartość TRUE, jeśli przynajmniej jeden z warunków zostanie spełniony, jeśli nie 

zostanie spełniony żaden warunek funkcja zwróci wartość FALSE. 

IN - za pomocą tego operatora sprawdzamy czy dana wartość należy do określonego zbioru. 

Elementy zbioru podaje się w nawiasach i oddziela przecinkami. Schemat: 

instrukcja WHERE nazwa_pola IN (1,2,5,8) 

Funkcja zwróci wartość TRUE, jeśli wartość danego pola będzie należeć do określonego przez nas 

wcześniej zbioru - w tym przypadku, jeśli wartość będzie równa 1, 2, 3, lub 8. Jeśli chcemy np. 

sprawdzić czy wartość należy do jakiegoś przedziału to zamiast wypisywać cały zbiór przy użyciu 

operatora IN, możemy użyć operatora BETWEEN. 

BETWEEN - sprawdza czy dana wartość należy do przedziału. Schemat: 

instrukcja WHERE nazwa_pola BETWEEN dolny_przedział AND gorny_przedział 

Jeśli chcielibyśmy teraz sprawdzić czy wartość pola należy do przedziału od 4 do 259 to nasza 

'formułka' wyglądałaby następująco: 

instrukcja WHERE nazwa_pola BETWEEN 4 AND 259 

Łącząc powyższe operatory moglibyśmy np. wyszukać wszystkich zawodników z naszej tabeli, 

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/pliki/2.html (2 of 4) [2007-05-20 12:43:37]

background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

którzy grają co najmniej 10 do maksymalnie 15 lat, zbierają średnio co najmniej 20 punków na 

mecz i w swoim imieniu mają literę 'e'. Konstrukcja taka wyglądałaby następująco: 

$zapytanie = "SELECT * FROM nba WHERE imie (LIKE \"e\") AND (lata BETWEEN 10 AND 15) AND 

(punkty > 20)"; 

Sortowanie wyników 

Wyniki poszukiwań do tej pory były posortowane w takiej kolejności, w jakiej dodaliśmy je do bazy 

danych, ale jeśli zechcielibyśmy posortować naszych graczy np. w kolejności alfabetycznej lub wg 

ilości punktów, jakie zdobywają na mecz? Do takiej operacji potrzebna będzie nam komenda 

ORDER BY wraz z komendą DESC. Schemat stosowania tych komend przedstawia się następująco: 

SELECT * FROM nazwa_tabeli ORDER BY nazwa_pola DESC 

Oczywiście możemy sortować wg kilku pól, wtedy wymieniamy kolejne pola po przecinkach: 

SELECT * FROM nazwa_tabeli ORDER BY nazwa_pola1 DESC, nazwa_pola2 DESC, nazwa_pola3 

DESC... 

Brak operatora DESC spowoduje wyświetlenie danych w kolejności odwrotnej do pożądanej. 

Przykładowo postaram się wam pokazać jak wyświetlić wszystkich zawodników z naszej tabeli w 

kolejności alfabetycznej, jeśli jednak znalazłoby się dwóch koszykarzy o identycznych personaliach 

kolejnym kryterium do ustawiania w kolejności będzie średnia ilość zdobywanych punków na 

mecz. 

SELECT * FROM nba ORDER BY imie DESC, punkty DESC 

Elegancka analiza błędów 

Często nasz kod zawiera błędy, jednak jeśli nawet jakaś operacja się nie powiedzie my nie 

zostaniemy o tym poinformowani. Co zrobić aby uniknąć takich sytuacji lub chociaż odpowiednio je 

przeanalizować? Podczas pierwszej lekcji zwróciłem uwagę, że jeśli wykonanie zapytania, jakie 

wysłaliśmy do serwera nie powiedzie się funkcja mysql_query() zwróci wartość FALSE, w takim 

wypadku należałoby odpowiednio wykorzystać fakt, że o ty wiemy. Funkcja mysql_error() zawiera 

treść błędu baz danych MySQL, jeśli takowy istnieje. Teraz w połączeniu z elementarną instrukcją 

If otrzymujemy bardzo potężne narzędzie służące analizie błędów. Poniższy kawałek kodu 

przedstawia jak zatrzymywać program i wyświetlać komunikat błędu: 

$sql = mysql_connect (mojserwer.pl, foo, off); 

$zaptanie="twoje zapytanie"; 

if (!($wykonaj=mysql_query($zaptanie))) /* Sprawdza czy wykonanie powiodło się */ 

$error = mysql_error($sql) ; /* Kopiuje zawartość błędu do zmiennej $error */ 

echo "Bład skryptu, odpowiedź serwera: $error"; /* Drukuje błąd na stronie */ 

else /* Jeśli błąd nie wystąpił kontynuuje działanie programu */ 

[ dalsze dzialanie programu ] 

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/pliki/2.html (3 of 4) [2007-05-20 12:43:37]

background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

Oczywiście nie wszystkie błędy są na tyle poważne, żeby od razu zatrzymywać działanie programu 

- można po prostu w przypadku mniej poważnego błędu wyświetlać odpowiednią informację i dalej 

kontynuować program. 

 

Autor:  

Piotr Kuźmiński 

pk@php.pl

 / 

piotr.k@2com.pl

  

http://pk.help.pl

  

http://www.php.pl

 

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/pliki/2.html (4 of 4) [2007-05-20 12:43:37]

background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

Podstawy MySQL'a (cz. 3) ] 

 
Podczas poprzednich lekcji przekazywałem wam skrupulatnie moje podstawowe informacje. Teraz 

już bez problemu posługujecie się MySLQ'em, jednak jest jeszcze kilka komend, które musicie 

poznać, a o których zapomniałem wspomnieć poprzednio. 

Mała rzecz, a cieszy ;-) 

Podczas poprzedniej lekcji przy rozszerzaniu naszej wyszukiwarki zapomniałem wspomnieć o 

jednej rzeczy. Chodzi tutaj o wyświetlanie ilości znalezionych rekordów, można to zrobić na około 

tj. za pomocą wyrażeń SQL przeszukiwać i za każdym razem, kiedy coś znajdzie drukować to na 

stronie i zliczać. Potem na samym dole strony wyświetlić ile rekordów znaleziono. Można także, 

najpierw osobno zliczać, później wydrukować na górze strony, potem jeszcze raz przeszukiwać i 

dopiero wtedy drukować właściwą zawartość strony, jednak w ten sposób za bardzo zajmujemy 

serwer. Jest o wiele prostsza i przyjemniejsza metoda, a do serwer nie będzie nadużywany. 

Komenda 'mysql_num_rows' służy do zwracania ilości pól znajdujących się we wskazanym zbiorze 

wyników, stosujemy ją według następującego schematu: 

$zapytanie = "SELECT nazwy_pol FROM nazwa_tabeli WHERE warunek"; 

$wykonaj = mysql_query($zaptanie); 

$znaleziono = mysql_num_rows($wykonaj); 

Po wykonaniu tej operacji zmienna '$znaleziono' będzie zawierać ilość wyszukiwanych elementów. 

Teraz możesz wydrukować na górze strony ile razy znaleziono poszukiwane wyrażenie, a potem 

znalezione elementy. Przykład: 

$zapytanie = "SELECT * FROM nba WHERE imie LIKE \"%a%\" ORDER BY DESC"; 

$wykonaj = mysql_query($zaptanie); 

$znaleziono = mysql_num_rows($wykonaj); 

if ($znaleziono == "0") 

print "Nie znaleziono żadnego zawodnika z literą 'a' w imieniu"; 

else 

print "Znaleziono $znaleziono zawodników z literą 'a' w imieniu.<br><br>"; 

while ($row = mysql_fetch_array($dzialaj)) 

print "Imie zwodnika: <b>".$row['imie']." </b><br>Lata gry: <b>".$row['imie']." </b>"; 

Przy okazji pokazałem, co zrobić żeby pokazywał się napis informujący o braku szukanych 

rekordów. Po wykonaniu tych kilku linijek powinna nam się ukazać piękna lista z zawodnikami, 

których imię zawiera literę 'a' lub komunikat o braku takich zawodników w bazie danych. 

Kasowanie baz danych 

Czasami zdarzy się tak, że zrezygnujemy nie tylko z kilku informacji zawartych w danej bazie, ale 

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/pliki/3.html (1 of 3) [2007-05-20 12:43:38]

background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

z całej bazy, wtedy kasujemy ją przy użyciu komendy mysql_drop_db. Robimy to w następujący 

sposób: 

mysql_drop_db (nazwa_bazy) 

W odniesieniu do naszego przykładu, skasowanie całej bazy danych z zawodnikami wyglądałoby 

tak: 

mysql_drob_db ("zawodnicy"); 

Inny sposób na wyświetlenie zawartości bazy danych 

Jak na razie poznaliście tylko jedną metodę wydobywania informacji z bazy danych - za pomocą 

komendy 'mysql_fetch_arry', druga metoda , którą za chwile poznacie jest prawie taka sama. 

Komenda 'mysql_fetch_row' różni się tym od 'mysql_fetch_arry', że wyniki przedstawiane są w 

postaci tablicy indeksowanej liczbami (nie nazwami pól z bazy danych!). Rozpatrzmy przykład: 

$zapytanie = "SELECT * FROM nba"; 

$dzialaj=mysql_query($zapytanie); 

while ($pole = mysql_fetch_row($dzialaj)) 

print "$pole[1], "; 

W ten sposób zostaną wyświetlone imiona wszystkich zawodników oddzielone od siebie 

przecinkami. Przypominam tylko, że imiona zawodników były drugim polem w naszej bazie 

danych. 

Informacje o tabeli 

Jeśli mamy dostęp do jakiejś tabeli, którą nie my stworzyliśmy to zapewne chcemy cos o niej 

wiedzieć np. nazwy kolumn czy jaka jest maksymalna długość znaków w danym polu. 

Nazwy pól możemy wydobyć za pomocą komendy 'mysql_field_name' wg schematu: 

mysql_field_name(id_wyników, indeks_pola) 

Rozpatrzmy to na przykładzie: 

$zapytanie = "SELECT * FROM nba"; 

$dzialaj=mysql_query($zapytanie); 

$n_pola = mysql_field_name($dzialaj, 0); 

Po wykonaniu tej operacji zmienna $n_pola będzie zawierać nazwę pierwszego pola (indeks 0) w 

tym przypadku zmienna zwróci wartość 'id' (takie jest pierwsze pole w tabeli nba). 

Maksymalną ilość znaków danego pola wyciągamy komendą 'mysql_field_len' według 

następującego schematu: 

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/pliki/3.html (2 of 3) [2007-05-20 12:43:38]

background image

WEBHELP - Html zone - Kurs : Podstawy MySQL'a

mysql_field_len(id_wyników, indeks_pola) 

Przykład: 

$zapytanie = "SELECT * FROM nba"; 

$dzialaj=mysql_query($zapytanie); 

$d_pola = mysql_field_len($dzialaj, 0); 

Zmienna '$d_pola' będzie zawierać liczbę '10', ponieważ pierwsze pole 'id' ograniczyliśmy 

długością 10 znaków. 

Nazwę tabeli, z której pochodzi wskazane pole możemy uzyskać korzystając z komendę ' 

mysql_field_table' w następujący sposób: 

mysql_field_table(id_wyników, indeks_pola) 

Przykład: 

$zapytanie = "SELECT * FROM nba"; 

$dzialaj=mysql_query($zapytanie); 

$n_tabeli = mysql_field_table($dzialaj, 0); 

Zmienna '$n_tabeli' zwróci 'nba' czyli nazwę tabeli, z której pochodzi pole o indeksie zerowym. 

Aby dowiedzieć się, jakiego typu jest dane pole trzeba użyć komendy 'mysql_field_type' 

analogicznie jak poprzednie komendy tego typu: 

mysql_field_type(id_wyników, indeks_pola) 

 

Autor:  

Piotr Kuźmiński 

pk@php.pl

 / 

piotr.k@2com.pl

  

http://pk.help.pl

  

http://www.php.pl

 

file:///D|/_Tutoriale_/Bazy%20Danych/Podstawy%20MySQL'a/pliki/3.html (3 of 3) [2007-05-20 12:43:38]