
W poprzednich artykułach prezentowałem sposoby wykorzystania bazy MySQL. Teraz pora na praktykę. Pokażę, w jaki sposób wyciągać z lub wprowadzić do bazy danych rekordy na potrzeby dynamicznej strony WWW.
Do realizacji instrukcji wymagana jest obsługa języka PHP oraz oczywiście dostęp do bazy danych. Aby wykonać instrukcję należy najpierw połączyć się z MySQL. Zostaną wykorzystane i częściowo omówione dwie funkcje języka PHP: mysql_query() oraz mysql_fetch_array().
Aby wykonać zapytanie należy wiedzieć, co ma zostać pobrane z bazy. Zapytanie wykonam wykorzystując jedną zmienną.
Jest to najprostszy przykład zapytania. Możliwe jest dodanie wszelkich warunków z uwzględnieniem sortowania. Można pobrać wszystkie kolumny, lub tylko wybrane. Aby dowiedzieć się więcej na temat struktur zapytania, należy zajrzeć do poprzednich artykułów.
Właśnie tą zmienną będę się posługiwał do wykonywania wszystkich zapytań.
Jest to funkcja realizująca zapytania. W zależności od rodzaju zapytania może zwracać różne wyniki. Zapytania typu INSERT, DELETE czy UPDATE nie zwracają rekordów, dlatego funkcja zwróci wartość TRUE lub FALSE.
Jeżeli natomiast zapytanie to np. SELECT - funkcja zwróci wszystkie wartości zgodne z zapytaniem lub w przypadku błędu - wartość FALSE. Warto funkcję poprzedzić znakiem @, co pozwoli na uniknięcie wyświetlania zbędnych komunikatów.
Przykład użycia funkcji:
Do zmiennej $result (wynik) zostaną przekazane wartości, które będzie można później wykorzystać.
Na ten temat nie będę się raczej rozpisywał. Nie ma tutaj nic wartego opisania, oprócz tego, że nie otrzymamy żadnego specjalnego wyniku w PHP. Wykonanie zapytania będzie miało wartość TRUE bądź FALSE.
Warto tutaj zabezpieczyć się instrukcją warunkową:
Jest to podstawowa funkcja, dzięki której można odczytać dane zapisane w bazie danych. Funkcja zwraca pierwszy rekord, jednak po zastosowaniu jej w odpowiedniej pętli można wyciągnąć wszystkie rekordy (lub te spełniające określony warunek). Rekordy występują tutaj w postaci tablicy.
Do funkcji przesyłamy parametr zawierający wyniki zapytania (zmienna $result). Warto przy tym wspomnieć, że możliwe jest podanie dodatkowego parametru (stała), który określa rodzaj zwracanej tablicy.
Funkcję możemy wywołać w następujący sposób:
Realizacja powyższego spowoduje, że zmienna $row będzie tablicą zawierającą elementy (wartości kolumn) danego rekordu. Do rekordów będziemy mogli odwołać się jako $row[0] - dla pierwszej kolumny lub $row[nazwa_pierwszej_kolumny].
Opcjonalny parametr, o którym wspomniałem wyżej, określa tablicę asocjacyjną lub indeksowaną.
Stałe określające tablicę:
Funkcję teraz możemy wykonać tak:
Lub dla tablicy asocjactjnej, tak:
Zamiast mysql_fetch_array() możliwe jest użycie innych funkcji w zależności od oczekiwanej postaci zwracanego rezultatu.
mysql_fetch_row() - zawraca rekordy w postaci tablicy indeksowej (MYSQL_NUM).
mysql_fetch_assoc() - zwraca rekordy w postaci tablicy asocjacyjnej (MYSQL_ASSOC).
mysql_fetch_object() - zwraca rekordy w postaci obiektów.
Teraz pokażę jak wykorzystać powyższe wiadomości przy użyciu języka PHP. Wykorzystam przykład z poprzednich artykułów. Trzeba pamiętać, że tabela musi być już utworzona w bazie danych.
Wykorzystane zostaną dane z formularza, który przesyła dane metodą $_POST.
Dane te przypisano do zmiennych: $nowe_imie, $nowe_nazwisko, $nowy_email
Zasada działania jest prosta i nie wiele można o niej powiedzieć. Po prostu - jeśli dane zostaną wprowadzone - komunikat pierwszy. W przeciwnym razie wyświetli się komunikat drugi.
Jest możliwość zlokalizowania błędu. W tym wypadku, gdy pojawi się błąd, oznacza to, że zapytanie zostało źle sformułowane. Nie należy używać komunikatu wyświetlającego błędy techniczne - chyba, że dla własnego użytku.
Tutaj sprawa jest troszeczkę inna. Instrukcja może być realizowana na co najmniej dwa sposoby: wyciąganie jednego rekordu lub wyciąganie większej ilości rekordów.
Oto przykład dla jednego rekordu:
Nieco modyfikując powyższy przykład możemy wyciągnąć kilka rekordów i wypisać je w podobny sposób:
Zamiast MYSQL_NUM można użyć MYSQL_ASSOC, tylko należy pamiętać o nazwach kolumn w elementach tablicy.
Kilka wskazówek, o których warto wiedzieć podczas pisania skryptów opartych o MySQL:
Znając powyższy materiał można już w pełni funkcjonalnie wykorzystać możliwości PHP połączone MySQL.
Dzięki powyższym instrukcjom i przy odrobinie pomysłowości można budować profesjonalne dynamiczne strony WWW. Nie jest to przesada, jednak podstawowe wiadomości o języku PHP muszą być przyswojone...
Z innej beczki:
Chcesz być bogaty i szczęśliwy?