Krótki kurs korzystania z PHP i MySQL
-
- 1. Tworzenie bazy
- 2. Tworzenie tabel
- 3. Łączenie się z MySQL w PHP
- 4. Wysyłanie zapytań do bazy
- 5. Pobieranie rekordów
- 6. Usuwanie rekordów
- 7. Edycja rekordów
- 8. Dodawanie rekordów
Wielu początkujących programistów PHP ma problem, ponieważ chciałoby napisać skrypt, który będzie dość mocno rozwinięty, ale blokuje ich brak znajomości jakiejkolwiek bazy danych. Postaram się dzisiaj przybliżyć zagadnienie korzystania jednej z nich – MySQL – razem z PHP. Nie będę się zagłębiał dalej niż zwykłe dodawanie, usuwanie, edycję i pobieranie rekordów z tabel, gdyż w końcu ma to być artykuł dla początkujących. Jeżeli ktoś ma problemy z tworzeniem baz danych i samych tabel, polecam skorzystać z PhpMyAdmina, który oferuje wizualne tworzenie obydwu tych rzeczy. Opiszę ten krok, abyś nie miał(a) „wszystko podane na tacy”. Jest on zainstalowany na większości serwerów, więc problemu być nie powinno. Oczywiście, dla przyśpieszenia wykonywania przez Ciebie rzeczy zawartych w tym artykule, będę podawał kody do: stworzenia bazy i tabeli i je opisywać. Jeżeli czegoś nie zrozumiałeś, co napisałem w tym wstępie, to się nie przejmuj. Powinieneś to zrozumieć po przeczytaniu kolejnych części.
Chciałbym tylko powiedzieć we wstępie, że do bazy danych wysyła się tak zwane zapytania, czyli ciągi tekstowe o specjalnej składni, których wysłanie owocuje wykonaniem odpowiednich rzeczy przez bazę i ewentualne zwrócenie jakichś wartości. Wszystkie wartości w bazie danych są przechowywane w tabelach pod postacią rekordów.
1.Tworzenie bazy
Informacje „jak pobrać rekordy z tabeli” nie będą nam przydatne, jeżeli nie stworzymy pierw bazy, w której będziemy umieszczać tabele. Jeżeli chcesz ją utworzyć poprzez PhpMyAdmina, to musisz przejść do jego strony głównej i będziesz tam miał(a) pole „Utwórz nową bazę danych”. W pole te musisz wpisać „pracownicy”(z bazy o takiej nazwie będziemy korzystać w tym artykule) i kliknąć w przycisk „Utwórz”. Jeżeli chcesz to zrobić za pomocą zapytania, to również wchodzisz do PhpMyAdmina i po lewej stronie strony(na jej górze) masz 4 przyciski. Wciskasz ten, który wygląda jak „okienko Windowsa” z czerwonym napisem „SQL” w środku. Do niego wpisujesz:
1 |
CREATE DATABASE `pracownicy`; |
Po wciśnięciu przycisku „Wykonaj” utworzy się baza o nazwie „pracownicy”. Przy okazji poznałeś(aś) składnię zapytania, które tworzy nową bazę.
2. Tworzenie tabeli
Bazę już mamy, czyli nadszedł czas, aby stworzyć tabelę, która będzie zawierała nasze upragnione wartości, czyli rekordy. Tabele dzielą się na kolumny, czyli tak jakby zbiory wartości rekordów. Wyobrazić to możesz sobie w tabeli, gdzie każdy wiersz to rekord, a kolumna to pole(kolumna) o określonej nazwie. W przypadku, kiedy chcesz utworzyć tabelę za pomocą PhpMyAdmina, musisz kliknąć w lewej części strony na link „pracownicy (0)” i odpowiednio wypełnić formularz „Utwórz nową tabelę w bazie danych pracownicy”: w polu „Nazwa” musisz wpisać: „lista_pracownikow”, a w „Liczba pól”: 4, gdyż Nasza tabela będzie posiadała 4 kolumny. Teraz wciśnij „Wykonaj”. W kolumnie „Pole” musisz wpisać kolejno:
- „id”,
- „imie”,
- „nazwisko”,
- „data_urodzenia”.
Zapewne zastanawiasz się po co jest kolumna „id”. W niej każdy rekord będzie miał swoją, unikalną wartość liczbową, która będzie nam potrzebna w momencie, kiedy będziemy chcieli np. wyedytować którąś z wartości rekordu pracownika Jan Kowalski, który urodził się 20 mają 1970 roku, a może być takich dwóch. Normalnie edycja wykonałaby się na obydwu pracownikach, a tak podając pole „id” jako wyznacznik, zmienisz wartość tylko jednemu.
W kolumnie „Typ” wybierasz kolejno:
- „INT”,
- „VARCHAR”,
- „VARCHAR”,
- „DATE”.
Właśnie wybrałeś(aś) typy wartości, które będą się znajdowały w poszczególnych kolumnach. „INT” odpowiada liczbom całkowitym, „VARCHAR” ciągom tekstowym, a „DATE” – datom(UWAGA! Daty podajemy w formacie rok-miesiąc-dzień!).
Przejdźmy do kolumny „Długość/Wartości”. Tutaj wpisujesz kolejno:
- „10”,
- „50”,
- „50”,
- w 4. wierszu miejsce pozostawiasz puste.
O co chodzi z tymi „długościami”? Długości oznaczają, jaką maksymalną ilość znaków będzie mogło się znajdować w jednym rekordzie, w danej kolumnie. Nie należy dawać tutaj maksymalnych wartości, ponieważ baza w przyszłości niepotrzebnie się rozrośnie pod względem miejsca na dysku, które będzie zajmować.
Resztę pól pozostawiamy puste. Wyjątkiem jest wiersz z kolumną „id”, gdzie w kolumnie „Dodatkowo” wybieramy „auto_increment” i wybieramy pole w kolumnie, które jest oznaczona obrazkiem z kluczykiem. „Auto_increment” oznacza, że rekordy będą zawierały kolejne, unikalne liczby całkowite w tym polu, a ten „kluczyk” to, że kolumna te będzie tak jakby „podstawą” tej tabeli(poprawi to szybkość zwracania rekordów).
Wciskamy przycisk „Zachowaj”. To, co teraz wykonaliśmy wizualnie, jest równoznaczne z wykonaniem takiego zapytania:
1 2 3 4 5 6 7 |
CREATE TABLE `pracownicy`.`lista_pracownikow` ( `id` INT( 10 ) NOT NULL AUTO_INCREMENT , `imie` VARCHAR( 50 ) NOT NULL , `nazwisko` VARCHAR( 50 ) NOT NULL , `data_urodzenia` DATE NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM |
Jeszcze prosiłbym o wykonanie zapytania poniżej, które uzupełni tabelę przykładowymi danymi(będą nam potrzebne w dalszych rozdziałach):
1 2 3 |
INSERT INTO `lista_pracownikow`(`imie`, `nazwisko`, `data_urodzenia`) VALUES ('Jan', 'Kowalski', '1970-05-20'); INSERT INTO `lista_pracownikow`(`imie`, `nazwisko`, `data_urodzenia`) VALUES ('Krzysztof', 'Kowalski', '1980-11-13'); INSERT INTO `lista_pracownikow`(`imie`, `nazwisko`, `data_urodzenia`) VALUES ('Mateusz', 'Kowalski', '1973-07-25'); |
3. Łączenie się z MySQL w PHP
Mamy już bazę z Naszą upragnioną tabelą. Teraz potrzebujemy się połączyć poprzez PHP z bazą. W Internecie zapewne znajdziesz artykuły, które wykorzystują do tego bibliotekę „mysql”, lecz wraz z nowymi wersjami MySQLa i PHP jest już biblioteka „mysqli”, która zapewnia szybsze operowanie na bazie i obiektowość, której ta pierwsza nie posiada. Jej opis znajdziesz w Manualu PHP pod adresem http://pl2.php.net/manual/pl/book.mysqli.php . Zachęcam do zapoznania się z wszystkimi metodami tej klasy, ponieważ może to nam później ułatwić pracę z bazą. Łączymy się z nią za pomocą konstruktora tej klasy:
1 2 3 |
<?php $polaczenie = new mysqli('host', 'użytkownik', 'hasło', 'baza'); //Otwieramy połączenie ?> |
Hostem zazwyczaj jest „localhost”, w tym przypadku bazą: „pracownicy”, a użytkownika i hasło musisz się dowiedzieć od administratora, bądź z panelu, który możliwe, że twój hosting udostępnia Tobie do zarządzania bazami.
Jak już się połączyliśmy z bazą, to musimy pamiętać, aby w miejscu, gdzie przestajemy z niej korzystać, zamknąć połączenie, aby nie spowalniać wykonywania się skryptu. Zamykamy połączenie, wywołując destruktor tego obiektu:
1 2 3 4 5 |
<?php $polaczenie = new mysqli('host', 'użytkownik', 'hasło', 'baza'); //Otwieramy połączenie unset($polaczenie); //Zamykamy połączenie ?> |
4. Wysyłanie zapytań do bazy
Pierw trzeba zacząć od tego, co to są zapytania. Są to ciągi tekstowe o określonej składni, które gdy zostaną przekazane do bazy danych, zostają interpretowane i zostaje wykonywane działanie, na które dany typ zapytania wskazuje. Do wykonywania zapytań wykorzystuje się metodę query:
1 2 3 4 5 6 7 |
<?php $polaczenie = new mysqli('host', 'użytkownik', 'hasło', 'baza'); //Otwieramy połączenie $polaczenie->query('Jakieś zapytanie'); //Wysyłamy zapytanie do bazy unset($polaczenie); //Zamykamy połączenie ?> |
Rozpisywać się tutaj nie będę, ponieważ aby coś zrobić, musimy przejść do kolejnych tematów, czyli między innymi:
5. Pobieranie rekordów
Wreszcie doszliśmy do momentu, kiedy coś pobierzemy z bazy! Aby pobrać rekordy z tabeli musimy wykonać zapytanie pobierające, które nazywa się „SELECT”. Jego składnia to:
1 |
SELECT kolumny FROM tabela |
Przykładowo, aby pobrać wszystkie rekordy razem z wszystkimi polami z Naszej tabeli „lista_pracownikow” musimy wykonać zapytanie o takiej treści:
1 |
SELECT * FROM `lista_pracownikow` |
Znak „*” w miejscu listy kolumn oznacza, że chcemy pobrać wszystkie pola. Jeżeli chcielibyśmy uzyskać jedynie wartości pól: „imie” i „nazwisko”, to zapytanie by tak wyglądało:
1 |
SELECT `imie`, `nazwisko` FROM `lista_pracownikow` |
Skoro jesteśmy już przy opracowywaniu zapytań, to warto wspomnieć o „WHERE”, który ogranicza rekordy, które mają być wysłane do skryptu. Jego składnia to:
1 |
WHERE warunek
|
Warunków może być kilka i trzeba je oddzielać operatorami logicznymi, czyli:
- AND ( jako „i” ),
- OR ( jako „lub” ).
Przykład:
1 |
WHERE warunek AND warunek |
Przykładowe jego zastosowanie jednego warunku razem z „SELECT”:
1 |
SELECT `imie`, `nazwisko` FROM `lista_pracownikow` WHERE `imie`='Krzysztof' |
Takie zapytanie nam zwróci pola: „imie” i „nazwisko” rekordu, który zawiera w kolumnie „imie” wartość równą „Krzysztof”.
Teraz zabierzmy się do zaaplikowania tego do kodu PHP. Zapytanie pobrania jako jedyne trzeba przetworzyć, więc pobranie informacji o pracownikach nie pozostanie na wykonaniu zapytania. Kod będzie musiał wyglądać tak(generuje on tabelę HTML z pobranymi danymi dla odzwierciedlenia tego, co odbiera):
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $polaczenie = new mysqli('host', 'użytkownik', 'hasło', 'pracownicy'); $zapytanie = $polaczenie->query('SELECT * FROM `lista_pracownikow`'); echo '<table>'; while($wartosci = $zapytanie->fetch_assoc()) { echo '<tr><td>' . $wartosci['id'] . '</td><td>' . $wartosci['imie'] . '</td><td>' . $wartosci['nazwisko'] . '</td><td>' . $wartosci['data_urodzenia'] . '</td></tr>'; } unset($polaczenie); echo '</table>'; ?> |
Zapewne patrzysz na to i zastanawiasz się, co tutaj napisałem. Już wyjaśniam. Najpierw nawiązałem połączenie z bazą danych, później wysłałem do bazy danych zapytanie o treści
1 |
SELECT * FROM `lista_pracownikow` |
, lecz co to? Po co przypisywałem to do zmiennej? To jest wyjątek i aby potem przetworzyć dane trzeba właśnie tak zrobić. Potem jest pętla, w której do zmiennej $wartosci przypisuję wartość metody $zapytanie->fetch_assoc(). Chwila, chwila… „Metody”? Tak, ponieważ zmienna $zapytanie została obiektem rekordu mysqli. Metoda fetch_assoc() zwraca tablicę asocjacyjną, której elementy mają nazwy kolumn, a ich wartości to… …wartości. Pętla wykonuje się aż metoda ta będzie zwracać wynik inny niż FALSE, a taki właśnie zwróci, gdy „skończy się zasób rekordów”. W przed przedostatniej linii zamykam połączenie i to tyle.
Myślę, że rozumiesz, jak pobierać dane z bazy, więc przejdźmy do ich usuwania.
6. Usuwanie rekordów
Aby usunąć rekord z tabeli musimy użyć zapytania „DELETE”, którego składnia wygląda tak:
1 |
DELETE FROM tabela WHERE warunek |
Przykładowe zapytanie dla Naszej tabeli:
1 |
DELETE FROM `lista_pracownikow` WHERE `imie`='Krzysztof' |
Skrypt PHP dla takiego zapytania będzie wyglądał tak:
1 2 3 4 5 6 7 |
<?php $polaczenie = new mysqli('host', 'użytkownik', 'hasło', 'pracownicy'); $polaczenie->query('DELETE FROM `lista_pracownikow` WHERE `imie`=\'Krzysztof\''); unset($polaczenie); ?> |
Nie jest to rzecz skomplikowana, więc myślę, że więcej tłumaczyć nie muszę.
7. Edycja rekordów
Do tego wykorzystujemy zapytanie „UPDATE”, którego składnia wygląda tak:
1 |
UPDATE tabela SET kolumna=wartość |
Po „SET” umieszczamy informację dla bazy danych, jakie kolumny ma zmienić i na jaką wartość. Łatwo to można połączyć z klauzulą „WHERE”, gdyż w zapytaniu o składni takiej, jak wyżej, wartość zostanie zmieniona we wszystkich rekordach:
1 |
UPDATE tabela SET kolumna=wartość WHERE warunek |
Przykładowe zapytanie o powyższej składni:
1 |
UPDATE `lista_pracownikow` SET `nazwisko`='Zelek' WHERE `imie`='Jan' |
Skrypt, który wykona powyższe zapytanie:
1 2 3 4 5 6 7 |
<?php $polaczenie = new mysqli('host', 'użytkownik', 'hasło', 'pracownicy'); $polaczenie->query('UPDATE `lista_pracownikow` SET `nazwisko`=\'Zelek\' WHERE `imie`=\'Jan\''); unset($polaczenie); ?> |
8. Dodawanie rekordów
Już wcześniej spotkałeś się z zapytaniem, które trzeba do tego użyć, na początku artykułu. Jest to „INSERT”. Jego składnia to:
1 |
INSERT INTO tabela(kolumny) VALUES(wartości) |
Nie jest to jakieś skomplikowane. Chciałbym zwrócić uwagę, żeby wartości były w tej samej kolejności, co kolumny w zapytaniu, ponieważ skrypt nie wróżka i nie domyśli się, gdzie co trzeba wstawić. Przykładowe zapytanie o tej składni:
1 |
INSERT INTO `lista_pracownikow`(`imie`, `nazwisko`, `data_urodzenia`) VALUES ('Krzysztof', 'Kowalski', '1980-11-13') |
Skrypt wykorzystujący powyższe zapytanie będzie wyglądał tak:
1 2 3 4 5 6 7 |
<?php $polaczenie = new mysqli('host', 'użytkownik', 'hasło', 'pracownicy'); $polaczenie->query('INSERT INTO `lista_pracownikow`(`imie`, `nazwisko`, `data_urodzenia`) VALUES (\'Krzysztof\', \'Kowalski\', \'1980-11-13\')'); unset($polaczenie); ?> |
Comments (2)











Buy:Propecia.Zithromax.Super Active ED Pack.Tramadol.Levitra.Cialis Super Active+.Viagra.VPXL.Maxaman.Cialis Soft Tabs.Viagra Professional.Viagra Super Active+.Viagra Super Force.Cialis Professional.Viagra Soft Tabs.Cialis.Soma….
spray http://bestpartsplus.infov.BESTPARTSPLUS.INFO/tag/body+spray+strong+perfume/ : perfume…
body…