Kilka słów wstępu
Serwer baz danych umożliwia założenie i wykorzystanie bazy oraz
dostęp do jej zasobów według zdefiniowanych uprawnień.
Każda z baz przechowuje dane w tabelach.
Tabele w bazach danych składają się z pól (kolumn) o określonej
nazwie, oraz z rekordów (wierszy).
MySQL jest relacyjną bazą danych, co oznacza, że pola tabel są
połączone ze sobą, co umożliwia zachowanie większego porządku
przechowywanych danych oraz łatwiejszy do nich dostęp.
Korzystając z baz danych należy pamiętać o zasadzie jak
najmniejszych uprawnień. Oznacza to, że jeżeli użytkownik w danym
momencie ma przeglądać przechowywane dane, nie potrzebuje uprawnień
administratora umożliwiających np. kasowanie danych.
Ze względów bezpieczeństwa nigdy nie pracujemy na koncie
administratora (root).
Projektując bazę danych należy przestrzegać zasady, aby nie
wprowadzać w wielu miejscach tych samych danych.
£ączenie z serwerem baz z poziomu skryptu PHP
Skrypt, aby móc współpracować z serwerem baz, musi najpierw połączyć
się z nim. Odbywa się to za pomocą funkcji
mysq_connect(). Funkcja ta posiada trzy parametry:
- adres serwera baz,
- nazwa użytkownika,
- hasło użytkownika.
$url = "adres";
$identyfikator = "login";
$hasl = "haslo";
mysql_connect($url,$identyfikator,$hasl);
Funkcja mysql_connect() zwraca true, jeżeli uda się proces
połączenia z serwerem baz, w przeciwnym wypadku zwraca wartość false.
Warto w skrypcie sprawdzić efekt połączenia, gdyż jeżeli ono się nie
powiedzie, nie ma sensu wykonywania kolejnych elementów skryptu,
które korzystają z danych pobieranych z bazy.
$url = "adres";
$identyfikator = "login";
$hasl = "haslo";
if(!mysql_connect($url,$identyfikator,$hasl)
{
echo'Nie udało się połączyć z serwerem baz.';
exit();
}
Jeżeli skrypty znajdują się na tym samym
komputerze, na którym pracuje serwer baz, jako adres serwera podaje
się zwykle localost.
Zakładanie nowej bazy z poziomu skryptu PHP
Założenie bazy możliwe jest tylko wtedy, gdy
użytkownik wykorzystany do połączenia ma takie uprawnienia.
Założenie bazy nie będzie również możliwe, jeżeli baza o takiej
nazwie już istnieje.
<?php
$url = "adres_serwera";
$identyfikator = "nazwa_użytkownika_bazy";
$hasl = "hasło_użytkownika_bazy";
if(!mysql_connect($url,$identyfikator,$hasl))
{
echo'Nie udało się połączyć z serwerem baz.';
exit();
}
$nazwa="nazwa_zakładanej_bazy";
$zapytanie="CREATE DATABASE $nazwa";
if(!mysql_query($zapytanie))
{
echo"Nie udało się założyć bazy danych o nazwie $nazwa<br>
Sprawdź, czy baza o takiej nazwie już nie istnieje. ";
}else{
echo"Baza o nazwie $nazwa<br>
została założona. ";
};
echo'</center></BODY>
</HTML>
';
?>
ćwiczenie 14_01 - Zakładanie bazy z poziomu
skryptu PHP
-
Należy umieścić na domowym serwerze WWW plik
14_01.php (do pobrania tutaj 14_01.zip)
-
Należy ustawić parametry połączenia z
serwerem baz (miejsca xxx) w pliku 14_01.php
-
Należy uruchomić plik 14_01.php (przez http).
-
Należy uruchomić powtórnie ten sam plik -
efektem działania skryptu powinien być komunikat o niepowodzeniu
procesu zakładania bazy
-
Należy sprawdzić (narzędzie PHPMyAdmin), czy
została założona baza o zadeklarowanej w skrypcie nazwie.
Chcąc pracować z tabelą i danymi przechowywanymi
w bazie należy po połączeniu z serwerem baz wyselekcjonować
odpowiednią bazę, czyli wskazać, do której bazy mają być wysyłane
zapytania.
mysql_select_db($nazwa_bazy);
Mając dostęp do bazy oraz odpowiednie uprawnienia
można zakładać tabele przechowujące dane. Umieszczając, a następnie
wyświetlając polskie znaki diakrytyczne spotkamy się z problemem ich
kodowania.
Tworząc tabele należy ustalić nazwy pól oraz
określić charakter przechowywanych zmiennych.
Najważniejsze rodzaje pól:
-
int - liczby całkowite (należy zadeklarować
długość pola, czyli liczbę znaków)
-
date - data w formacie rok-miesiąc-dzień
-
time - czas w formacie godzina:minuty:sekundy
-
datetime - data i czas w formacie
rok-miesiąc-dzień godzina:minuty:sekundy (odpowiednik funkcji
date("Y-m-d H:i:s")
-
char - łańcuch znaków o określonej długości
-
tinytext - krótki tekst
-
text - długi tekst
-
longtext - bardzo długi tekst
Aby uniknąć problemów z zapisem i odczytem
polskich znaków, można skorzystać z następujących ustawień ich
kodowania:
-
Kodowanie strony, która obsługuje bazę MySQL
- UTF 8
Informacja o kodowaniu polskich znaków na stronie internetowej
powinna wyglądać następująco:
<head>
<meta http-equiv="Content-Language" content="pl">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
Pisząc więc kod HTML z kodowaniem UTF-8
należy korzystać z programu obsługującego ten standard kodowania
(może to być program KED opisany w dodatku).
-
Połączenie z bazą w standardzie - UTF8
Po połączeniu z serwerem baz przed wyselekcjonowaniem bazy
należy umieścić następujący wpis:
mysql_query('SET NAMES
\'utf8\'');
-
System porównań dla pól tekstowych w bazie
MySQL - utf8_polish_ci
Tworząc w tabelach pola tekstowe system porównań można ustalić
następująco:
nazwa_pola TINYTEXT CHARACTER SET utf8
COLLATE utf8_polish_ci NOT NULL ,
Kod odpowiedzialny za zakładanie tabeli może więc
wyglądać następująco:
$tabela='nazwa_tabeli';
$zapytanie = "CREATE TABLE $tabela ( ".
"id int(11) NOT NULL auto_increment, ".
"imie TINYTEXT CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL ,
".
"nazwisko TINYTEXT CHARACTER SET utf8 COLLATE utf8_polish_ci NOT
NULL , ".
"data datetime NOT NULL, ".
"mail TINYTEXT CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL ,
".
"PRIMARY KEY (id), ".
"UNIQUE id (id) ".
")";
if(mysql_query($zapytanie))
{
echo"Założono tabelę $tabela<br>";
}else{
echo"<font color=red>Nie udało się założyć tabeli $tabela</font><br>";
};
W powyższym przykładzie zostanie założona tabela
o zadeklarowanej nazwie składająca się z 5 pól (id, imie, nazwisko,
data, mail).
Pierwsze pole "id" będzie przeznaczone na umieszczenie kolejnego
numeru rekordu. Nie musimy martwić się o numerowanie nowych
rekordów, zapewnia to parametr auto increment. Przypisane numery
będą niepowtarzalne UNIQUE id (id), nawet jeżeli któryś rekord
zostanie usunięty, numer tego rekordu nie zostanie już wykorzystany.
Rodzaj tego pola to int (liczby całkowite) o długości 11
znaków (powinno wystarczyć nawet dla bardzo obszernej bazy).
Parametr NOT NULL oznacza, że pola te nie będą
nigdy puste. Ustawienie takie wspomaga wydajność bazy.
Primary Key(id) oznacza, iż pole id będzie
kluczem głównym.
ćwiczenie 14_02 - Tworzenie tabel z poziomu
skryptu PHP
-
Należy umieścić na swoim koncie WWW pliki
14_02.php (do pobrania tutaj 14_02.zip)
-
Należy ustawić parametry połączenia w pliku
14_02.php (linie 66 i 67)
-
Należy zwrócić uwagę na wykorzystanie funkcji
odpowiedzialnej za wywołanie powtarzającego się kodu
-
Należy uruchomić plik 14_02.php (przez http).
-
Należy sprawdzić (narzędzie PHPMyAdmin), czy
została utworzona tabela.
|