WEB-AREA.org - serwis webmasterów
     Jak szukać?

Konkurs    Załóż subskrypcję    Katalog    Forum    BeginnerZone


MENU
KURSY
  - HTML
  - CSS
  - Java
  - PHP
  - CGI
  - ASP
  - WML
  - XML
  - SGML
SKRYPTY
  - JavaScript
  - PHP
  - CGI
INNE
  - Szablony
  - Forum
  - Webmasterska lista
  - Katalog
  - BeginnerZone
  - Konkurs
SUBSKRYPCJA
  - Załóż
  - Administracja
REDAKCJA
  - Skład
  - Współpraca
  - Reklama

ZOBACZ JESZCZE

PHP - Kurs - Rozdział IX - PHP a MySQL

W tym rozdziale kursu zajmiemy się połączeniem PHP z bazą danych MySQL. MySQL jest serwerem baz danych używających standardowych komend dla SQL. Możesz go ściągnąć stąd. Aby stworzyć nową bazę danych uruchamiamy serwer baz danych WinMySQLAdmin. Przechodzimy do zakładki Databases. Klikamy na ikonkę prawym przyciskiem i wybieramy create database. Wyświetli się okienko dialogowe pytające o unikalną nazwę bazy danych. Po naciśnięciu przycisku create database zostanie stworzona nowa baza danych o wybranej nazwie. Oczywiście nową bazę można stworzyć także przy pomocy dosowego i Unixowego edytora baz danych, mysqladmin, przy pomocy polecenia CREATE DATABASE nazwa. Można także stworzyć bazę z pomocą PHP, ale o tym później.

Teraz gdy już mamy bazę danych musimy stworzyć tabelę. W niej będziemy przechowywać dane. Tabel w bazie najczęściej jest bardzo dużo. Do stworzenia tabeli musimy włączyć (oczywiście jeżeli używamy Windowsa) MySQLManager'a, który znajduję się w katalogu bin. Po uruchomieniu klikamy na którąś z ikonek (np. na MySQL), potem prawym przyciskiem na nazwę bazy danych. Wybieramy SQL Query. Wygląda ono mniej więcej tak:

Wpisujemy polecenie:

CREATE TABLE nazwa (
pole1 int,
pole2 varchar(40),
pole3 blob
)

Klikamy na zieloną strzałkę znajdującą się na górze okna.

Stworzy ono tabelę o nazwie nazwa i trzech kolumnach o nazwach: pole1, pole2 i pole3. Teraz będziemy mogli umieszczać dane...

Aby dodać dane do tabeli należy w tym samym oknie co tworzyliśmy tabelę wpisać polecenie:

INSERT INTO nazwa VALUES(1,'napis1','napis2')

i nacisnąć zieloną strzałkę. Aby sprawdzić czy nam się udało należy wejść znowu na zakładkę query i wpisać:

SELECT * FROM nazwa

i kliknąć na zieloną strzałkę.

Na tym kończymy podstawy obsługi MySQL i bierzemy się za połączenie go z PHP. Na początku każdego skryptu PHP operującego na bazach danych musimy utworzyć połączenie z serwerem baz danych. Używamy do tego funkcji mysql_connect(), np.:

$pol = mysql_connect();

Posiada ona 3 parametry: nazwa hosta, nazwa użytkownika i hasło. W przykładzie funkcja uruchomi się z parametrami o wartościach: localhost (lokalny host), nazwa właściciela realizowanego procesu i pusty łańcuch znaków jako hasło.

Pod koniec każdego skryptu połączenie z serwerem powinniśmy zamknąć funkcją mysql_close($wskaznik_polaczenia), dla przykładu:

mysql_close($pol);

Zamykamy w nim połączenie ustanowione w poprzednim przykładzie. Potem musimy wybrać bazę danych którą chcemy operować. Wybieramy ją funkcją mysql_select_db(), np.:

mysql_select_db("baza");

Aby wykonać polecenie SQL używamy funkcji mysql_query(). Jeżeli chcemy pokazać wszystkie elementy z tabeli musimy to zrobić w następujący sposób:

<?PHP
$pol = mysql_connect();

mysql_select_db("baza");
$wyn = mysql_query("SELECT * FROM tabela");
while($tab = mysql_fetch_row($wyn)) {
for($i=0;$i<count($tab);$i++) echo $tab[$i]."\n<br>";
}
mysql_close($pol);
?>

gdzie baza to nazwa bazy danych, a tabela to nazwa tabeli którą mamy wyświetlić. Po odpowiednim sformatowaniu naszego "wydruku" może stworzyć tabelę, która będzie służyła jako księga gości.

Do pobierania danych z bazy służy kilka funkcji. Jednak dla wszystkie można użyć tylko po uprzednim wykonaniu polecenia SQL zachowanego w zmiennej, czyli w naszym przykładzie

$wyn = mysql_query("SELECT * FROM tabela");

Teraz już możemy pokazać poszczególne elementy. Robimy to funkcjami: mysql_fetch_array(), mysql_fetch_object() i mysql_fetch_row(). Parametrami funkcji jest zawsze zmienna wynikowa SQL, czyli w naszym przypadku $wyn.

Pierwsza funkcja zwraca tablicę asocjacyjną, której poszczególne elementy dostępne są pod ich SQLowymi nazwamy, czyli gdy mamy pole TELEFON w SQL to uzyskamy do niego dostęp przez a['TELEFON']. Funkcja zwraca wartość false jeżeli nie ma już więcej wierszy w zbiorze wyników.

Druga funkcja zwraca obiekt o nazwach pól równych nazwom pól SQLowych. Do przykładowego pola TELEFON uzyskamy dostęp przez a->TELEFON. Tak jak mysql_fetch_array(), tak i ta funkcja zwraca wartość false, gdy nie ma już więcej w zbiorze wyników.

Trzecia funkcja zwraca tablicę o indeksach równych numerom w kolejności poszczególnych pól (oczywiście pamiętamy o tym, że w PHP tablice indeksowane są od 0). Czyli jeżeli TELEFON jest piąty w kolejności to dostęp do niego uzyskamy przez a[4].

A teraz spis wszystkich funkcji z tego rozdziału:

int mysql_affected_rows() zwraca ilość wierszy objętych działaniem ostatnim zapytaniem
int mysql_create_db(string $nazwa) tworzy bazę danych*
int mysql_data_seek(int $wyniki, $num_wiersza) przesuwa wewnętrzny wskaźnik wiersza
int mysql_db_query(string $baza, $zapytanie, int $pol) przesyła zapytanie do bazy danych
int mysql_drop_db(string $baza) usuwa bazę danych*
int mysql_errno() zwraca numer błędu wygenerowanego przy ostatnim poleceniu
string mysql_error() zwraca komunikat błędu
object mysql_fetch_field(int $wyniki, $index_pola) pobiera informacje o polu**
array mysql_fetch_lengths(int $wyniki) zwraca tablicę zawierającą długości każdego z pól ostatniego rekordu pobranego przez funkcje mysql_fetch_array(), mysql_fetch_object() i mysql_fetch_row()
string mysql_field_name(int $wyniki, $index_pola) zwraca nazwę pola o indeksie $index_pola
int mysql_field_seek(int $wyniki, $index_pola) ustawia indeks pola
string mysql_field_table($wyniki, $index_pola) określa nazwę tabeli wskazanego pola zbioru wyników
string mysql_field_type(int $wyniki, $index_pola) określa typ pola
string mysql_field_flags(int $wyniki, $index_pola) zwraca flagi podanego pola***
int mysql_field_len(int $wyniki, $index_pola) zwraca długość pola
int mysql_free_result(int $wyniki) zwalnia pamięć zbioru wyników
int mysql_insert_id(void) określa identyfikator wygenerowany podczas realizacji ostatniego polecenia INSERT
int mysql_list_fields(string $baza, $tabela); zwraca listę pól zbioru wyników
int mysql_list_dbs(void) zwraca listę baz dostępnych na serwerze MySQL
int mysql_list_tables(string $baza) zwraca listę tabeli dostępnych w $bazie
int mysql_num_fields(int $wyniki) zwraca ilość pól w zbiorze wyników
int mysql_num_rows(int $wyniki) zwraca ilość wierszy w zbiorze wyników
int mysql_pconnect(void) otwiera trwałe połączenie z serwerem MySQL
int mysql_result(int $wyniki, $wiersz, mixed $pole) zwraca dane wynikowe
string mysql_tablename(int $wyniki, $index) zwraca nazwę tabeli, z której pochodzi pole

* - w tych funkcjach lepiej jest użyć poleceń SQLowych: dla funkcji mysql_create_db() - CREATE DATABASE nazwa, dla funkcji mysql_drop_db() - DROP DATABASE nazwa

** - spis nazw pól:

table nazwa tabeli
max_length maksymalna długość kolumny
not_null jeżeli kolumna nie może mieć wartości NULL zwraca TRUE
primary_key jeśli kolumna jest kluczem głównym zwraca wartość TRUE
uniqu_key jeśli kolumna jest kluczem, której wartości nie mogą się powtarzać zwraca wartość TRUE
multiple_key to co wyżej, gdzie wartości mogą się powtarzać
numeric jeśli kolumna przechowuje dane liczbowe ma wartość TRUE
blob jeśli przechowuje dane typu BLOB - TRUE
type typ danych kolumny
unsigned jeśli kolumna przechowuje dane typu unsigned (naturalne) - TRUE
zerofill jeśli pola kolumny są wypełnione zerami - TRUE

*** - może przyjąć wartości:

not_null nie może zawierać wartości null
primary_key jest częścią klucza głównego
unique_key jest częścią klucza, którego wartości nie mogą się powtarzać
multiple_key jest częścią klucza, którego wartości mogą się powtarzać
unsigned zawiera liczby naturalne
zerofill wartość pola jest dopełniana zerami
binary w polu został ustawiony atrybut binary (dane binarne)


LOGIN
Login:
Hasło:

ARTYKULY
 -"Edytory HTML'a"
 -"Publikowanie witryny"
 -"PHP w domu"
 -"Przeszukiwanie stron"
 -"Wprowadzenie do Javy"
 -"Grafika w PHP"

ARTYKULY
  1. PHP - przykładowe skrypty (1491)
  2. Szablony 1 (833)
  3. Kurs PHP (817)

    Łącznie: 24065
stat4u

SPONSOR




All rights reserved by J&J Filipowscy Design & Code