Kurs WWW

Paweł Rajba

pawel@i .uni.wroc.pl

http://pawel.i .uni.wroc.pl/

PHP – obsługa MySQL

 resource mysql_connect(

[string serwer

[,string użytkownik

[,string hasło]]])

 łączy z bazą danych

 domyślnie

 serwer: "localhost:3306"

 użytkownik: user będący właścicielem procesu MySQL

 hasło: ""

PHP – obsługa MySQL

 int mysql_create_db(string nazwa_bazy

[, resource identyfikator_połączenia])

 tworzy bazę danych

 bool mysql_select_db(string nazwa_bazy

[, resource identyfikator_połączenia])

 wybiera bazę danych

PHP – obsługa MySQL

 resource mysql_query(string zapytanie

[, resource identyfikator_połączenia

[, int typ_wyniku]])

 wykonuje zapytanie zwracając zasoby

 zapytania nie powinno się kończyć średnikiem

 typ_wyniku może przyjmować następujące

wartości:

 MYSQL_USE_RESULT

 MYSQL_STORE_RESULT (domyślne, wynik jest buforowany)

PHP – obsługa MySQL

 resource mysql_unbuffered_query(string zapytanie

[, resource identyfikator_połączenia

[, int typ_wyniku]])

 wysyła zapytanie nie pobierając i buforując wyniku

 ma znaczenie przy zapytaniu generującemu duże wyniki; znacznie oszczędza pamięć

 nie trzeba czekać na zakończenie zapytania; można od razu pracować na pierwszej krotce

 nie można użyć funkcji mysql_num_rows()

 przed wysłaniem kolejnego zapytania należy pobrać wszystkie wiersze.

PHP – obsługa MySQL

 int mysql_insert_id([resource id_połączenia])

 podaje numer ID wygenerowany przez auto_increment podczas ostatniej operacji INSERT

<?php

mysql_connect('localhost', 'user', 'pass') or die('Nie można się połączyć');

mysql_select_db('test');

mysql_query("INSERT INTO osoba(imie,nazwisko,...) values ('Paweł','Rajba',...)");

printf("Ostatnio dodany rekord ma id %d\n", mysql_insert_id());

?>

PHP – obsługa MySQL

 array mysql_fetch_array(resource wynik

[, int typ_wyniku])

 zapisuje wiersz wyniku w tablicy asocjacyjnej lub zwraca nul gdy nie ma więcej wierszy

 typ_wyniku

 MYSQL_ASSOC

 MYSQL_NUM

 MYSQL_BOTH (domyślne, zwraca tablicę

asocjacyjną i indeksowaną numerycznie)

PHP – obsługa MySQL

 array mysql_fetch_assoc(resource wynik)

 równoważne

mysql_fetch_array( _ , MYSQL_ASSOC)

 array mysql_fetch_row(resource wynik)

 równoważne

mysql_fetch_array( _, MYSQL_NUM)

 bool mysql_free_result(resource wynik)

 zwraca całą pamięć przydzieloną wynikowi

PHP – obsługa MySQL

 string mysql_error([resource id_połączenia])

 zwraca tekst komunikatu z ostatnio wykonanej operacji

 int mysql_errno([resource id_połączenia])

 zwraca numer komunikatu błędu z ostatnio wykonanej operacji

 bool mysql_close([resource id_połączenia])

 zamyka połączenie z serwerem

PHP – obsługa MySQL

 int mysql_num_rows(resource wynik)

 zwraca liczbę wierszy w wyniku

 stosuje się do polecenie SELECT

 int mysql_affected_rows([resource conn_id])

 zwraca liczbę przetworzonych wierszy

 stosuje się do poleceń UPDATE, INSERT,

DELETE

 jeżeli DELETE zostanie wywołany bez klauzuli WHERE, to wtedy funkcja zwróci wartość 0

PHP – obsługa MySQL

 bool mysql_data_seek(

resource identyfikator_wyniku,

int numer_wiersza)

 przesuwa wewnętrzny wskaźnik do pozycji

numer_wiersza

 array mysql_fetch_lengths(resource wynik)

 pobiera długość każdego pola pobranego za pomocą funkcji mysql_fetch_row (muszą być

numerki)

PHP – obsługa MySQL

 mysql_fetch_lengths – przykład:

<?php

...

$row = mysql_fetch_array($result,MYSQL_BOTH); $len = mysql_fetch_lengths($result);

print $row["id"]." "; print $row["name"]." "; print $row["salary"]."<br>\n"; print $len[0]." ".$len[1]." ".$len[2]."<br>\n";

...

?>

PHP – obsługa MySQL

 string mysql_field_table(

resource wynik, int ofset_pola)

 pobiera nazwę tabeli w której znajduje się dane pole

 może mieć znaczenie przy złączeniach

 int mysql_num_fields(resource wynik)

 zwraca liczbę pól w wyniku

 string mysql_field_name(

resource wynik, int indeks_pola)

 podaje nazwę danego pola w wyniku

PHP – obsługa MySQL

 string mysql_field_type(

resource wynik, int ofset_pola)

 pobiera typ podanego pola (int, real, string, ...)

 int mysql_field_len(

resource wynik, int ofset_pola)

 zwraca długość podanego pola

 resource mysql_list_fields(string baza, string tabela [, resource identyfikator_połączenia])

 zwraca informację o polach

PHP – obsługa MySQL

 mysql_list_fields – przykład

<?php

...

$fields = mysql_list_fields('test','emp', $link); $columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {

echo mysql_field_name($fields, $i).":"; echo mysql_field_type($fields, $i).":"; echo mysql_field_len($fields, $i)."<br>\n";

}

...

?>

//id:int:11

//name:string:20

//salary:int:11

PHP – obsługa MySQL

 resource mysql_list_tables(string baza

[, resource identyfikator_połączenia])

 pobiera nazwy tabel z baza

 string mysql_tablename(resource wynik, int i)

 pobiera nazwę i-tej tabeli z wyniku funkcji mysql_list_tables

PHP – obsługa MySQL

 Przykład:

<?php

...

$result = mysql_list_tables('test');

while ($row = mysql_fetch_row($result)) {

printf ("Tabela: %s\n",$row[0]);

}

for ($i=0; $i<mysql_num_rows($result); $i++) {

printf ("Tabela:%s\n",

mysql_tablename($result,$i));

}

...

?>

PHP – obsługa MySQL

 Przykład: tabela.php, bazooka.php

PHP – wysyłanie plików z formularza

 Kilka różnic między zwykłym formularzem, a takim do wysłania pliku:

 należy obowiązkowo umieścić w znaczniku

form atrybut enctype="multipart/form-data"

 powinien się również pojawić element input z type="file"

 możemy też umieścić element taki jak

<input type="hidden"

name="MAX_FILE_SIZE" value="30000"> określi on maksymalny akceptowany rozmiar

pliku; musi być przed input...file

PHP – wysyłanie plików z formularza

 Dyrektywy w pliku php.ini

 file_uploads = On | Off

włącza/wyłącza możliwość uploadowania

plików

 upload_tmp_dir = ścieżka

określa tymczasowy katalog w którym będą

składowane pobrane pliki; domyślnie nie jest to ustawione – rolę takiego katalogu pełni tymczasowy katalog w systemie (np.

C:\Windows\Temp)

PHP – wysyłanie plików z formularza

 Dyrektywy... c.d.

 upload_max_filesize = rozmiar

maksymalny akceptowany rozmiar

uploadowanego pliku (domyślnie 2MB)

 post_max_size = rozmiar

maksymalny akceptowany rozmiar

przesyłanego formularza (domyślnie 8M)

PHP – wysyłanie plików z formularza

 Po wysłaniu, dostępne są następujące zmienne:

 $_FILES["plik"]["name"]

– oryginalna nazwa pliku po stronie klienta

 $_FILES["thefile"]["type"]

– typ zawartości wysłanego pliku

 $_FILES["thefile"]["size"]

– rozmiar wysłanego pliku

 $_FILES["thefile"]["tmp_name"]

– nazwa pliku przesłanego na serwer

 $_FILES["thefile"]["error"] – kod błędu

PHP – wysyłanie plików z formularza

 Kody błędów, które mogą się pojawić przy wysyłaniu plików z formularza:

 UPLOAD_ERR_OK (kod 0)

– operacja zakończyła się sukcesem

 UPLOAD_ERR_INI_SIZE (kod 1)

– plik przekracza rozmiar określony dyrektywą upload_max_filesize w pliku php.ini

PHP – wysyłanie plików z formularza

 Kody błędów... c.d.

 UPLOAD_ERR_FORM_SIZE (kod 2)

– plik przekracza rozmiar określony dyrektywą z formularza MAX_FILE_SIZE

 UPLOAD_ERR_PARTIAL (kod 3)

– plik pobrany częściowo

 UPLOAD_ERR_NO_FILE (kod 4)

– nie pobrano żadnego pliku

PHP – wysyłanie plików z formularza

 Funkcje przydatne przy wysyłaniu plików z formularza

 bool is_uploaded_file(string nazwa_pliku)

– upewnia nas, że plik faktycznie został

przysłany metodą POST, a skrypt nie będzie pracował na plikach których nie powinien

 bool move_uploaded_file( string plik,

string destination)

– po sprawdzeniu, że plik został przysłany metodą POST jest on przenoszony do nowej

lokalizacji

PHP – wysyłanie plików z formularza

 Wysyłanie wielu plików

 Przykład: pliki.php

PHP – funkcje do obsługi tablic

 array array_count_values(array wejście)

 zwraca tablicę z elementami i ich częstością występowania w tablicy wejście (p)

 array array_diff(array t1, array t2 [, array ...])

 zwraca tablicę, której elementami są te

elementy t1, które nie występują w

pozostałych argumentach (p)

 array array_fill(int start, int ile, mixed wartość)

 wypełnia tablicę podanymi wartościami (p)

PHP – funkcje do obsługi tablic

 array array_filter(array wejście [, cal back funkcja_zwrotna])

 zwraca tablicę elementów z wejście, dla

których funkcja_zwrotna zwróci TRUE (p)

 array array_flip(array trans)

 dla każdego elementu tablicy wymienia klucz z odpowiadającą mu wartością (p)

 array array_intersect(array t1, array t2 [, array

...])

 zwraca elementy z t1, które występuję we wszystkich pozostałych argumentach (p)

PHP – funkcje do obsługi tablic

 bool array_key_exists (mixed szukany,

array tablica)

 sprawdza, czy szukany klucz jest w tablicy (p)

 array array_map(cal back funkcja_zwrotna, array t1 [, array t2...])

 wykonuje funkcje zwrotną na każdym

elemencie t1; liczba argumentów funkcji

zwrotnej powinna być równa ilości tablic (p)

PHP – funkcje do obsługi tablic

 array array_merge(array t1, array t2 [, array

...])

 łączy kilka tablic w jedną (p)

 mixed array_pop(array tablica)

 usuwa i zwraca ostatni element tablicy

 int array_push ( array tablica, mixed wartosc

[, mixed ...])

 wstawia jeden więcej elementów na koniec tablicy

PHP – funkcje do obsługi tablic

 mixed array_rand(array wejście [, int ilość])

 wybiera jeden lub więcej losowo wybranych elementów z tablicy (p)

 void shuffle(array tablica)

 tasuje elementy tablicy (p)

 array array_reverse(array wejście

[, bool zachowaj_klucze])

 odwraca kolejność elementów w tablicy (p)

PHP – funkcje do obsługi tablic

 mixed array_search(mixed igła, array

stóg_siana [, bool ścisły])

 szuka wartości w tablicy

 zwraca klucz znalezionego elementu lub

NULL

 ścisły określa, czy mają być też porównywane typy elementów

PHP – funkcje do obsługi tablic

 mixed array_shift(array tablica)

 usuwa i zwraca pierwszy element tablicy

 array array_slice(array tablica, int

przesunięcie [, int długość])

 zwraca kawałek tablicy od przesunięcie, a długość to ilość zwróconych elementów

 jeśli przesunięcie jest ujemne, to sekwencja zacznie się o tyle elementów od końca

 jeśli długość jest ujemna, to sekwencja

skończy się o tyle elementów od końca (p)

PHP – funkcje do obsługi tablic

 mixed array_sum(array tablica)

 oblicza sumę wartości elementów w tablicy

 array array_unique(array tablica)

 usuwa duplikaty wartości z tablicy

 int array_unshift ( array tablica, mixed wartość [, mixed ...])

 wstaw jeden lub więcej elementów na

początek tablicy

 int count(mixed zmienna)

 zlicza ilość elementów w tablicy

PHP – funkcje do obsługi tablic

 mixed current(array tablica)

 zwraca wartość bieżącego elementu

 mixed next(array tablica)

 przesuwa wskaźnik o jeden do przodu

 zwraca element po przesunięciu lub FALSE, jeśli nie ma więcej elementów

 mixed prev(array tablica)

 przesuwa wskaźnik o jeden do tyłu

 zwraca element po przesunięciu lub FALSE, jeśli nie ma więcej elementów

PHP – funkcje do obsługi tablic

 mixed reset(array tablica)

 ustawia wskaźnik w tablicy na pierwszy

element

 zwraca ten pierwszy element

 mixed end(array tablica)

 ustawia wskaźnik w tablicy na ostatni element

 zwraca ten ostatni element

 mixed key(array tablica)

 zwraca klucz bieżącego elementu tablicy

asocjacyjnej

PHP – funkcje do obsługi tablic

 int sizeof(mixed zmienna)

 alias do funkcji count()

 mixed pos(array tablica)

 alias do funkcji current()

 array range(mixed dolny, mixed górny)

 tworzy tablicę elementów od dolny do górny włącznie

 jeśli górny<dolny, to sekwencja będzie do górnego do dolnego (p)

PHP – funkcje do obsługi tablic

 array each(array tablica)

 pobiera parę (klucz, wartość) bieżącego

elementu w tablicy

 void list(mixed ...)

 argumentom przypisuje kolejne elementy z przypisywanej tablicy (p)

PHP – funkcje do obsługi tablic

 void sort(array tablica [, int flagi])

 sortuje tablice

 flagę można ustawić na

 SORT_REGULAR - porównuj elementy

normalnie

 SORT_NUMERIC - porównuj elementy jako

liczby

 SORT_STRING - porównuj elementy jako stringi (p)

PHP – funkcje do obsługi tablic

 void usort(array tablica, callback funkcja_por)

 sortuje tablicę porównując elementy funkcją zdefiniowaną przez użytkownika (p)

 void rsort(array tablica [, int flagi])

 sortuje w porządku odwrotnych

 int ksort (array tablica [, int flagi])

 sortuje tablicę względem kluczy

 zachowuje skojarzenia kluczy z danymi (p)