Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych MySQL studia zaoczne II stopnia, sem. I WYKŁAD 3: PHP, Złącze PHP-MySQL Agnieszka Oniśko, Małgorzata Krętowska MySQL a API Serwer MySQL Sesja klienta Connector/NET Connector/C++ Connector/J Connector/MXJ... Connector/ODBC Visual Studio Plugin Connector/OpenOffice.org Aplikacja klienta Klient.NET API, ADO.NET C++ API Java API PHP API Perl API Python API... OpenOffice Baza ćwiczeniowa PHP PHP obiektowy, skryptowy język programowania zaprojektowany do generowania dynamicznych stron internetowych. PHP (Hypertext Preprocessor) najczęściej stosuje się do przetwarzania skryptów po stronie serwera WWW, ale może być on również używany z poziomu wiersza poleceń oraz w aplikacjach pracujących w trybie graficznym np. przy pomocy bibliotek.
PHP PHP PHP Tools 1.0 (1995) PHP/FI 2.0 (1997) PHP 3 (1998) PHP 4 (2000) PHP 5 (2004) PHP 6 PHP umożliwia współpracę z wieloma rodzajami źródeł danych: systemy zarządzania bazami danych pliki tekstowe dokumenty XML serwisy WWW RUBY PHP Zmienne 1. Składnia PHP bazuje na składni języków C, Java oraz Perl 2. Cały kod PHP musi zawierać się pomiędzy znacznikami: oraz 3. Starsze wersje dopuszczały także parę znaczników <? oraz (niezalecane, w PHP 6 nie będą dostępne) 4. PHP obsługuje większość znanych baz danych: MySQL, Postgres, Oracle, MS SQL, DB2 $To_jest_zmienna; $To nie jest zmienna; $To_tez_jest_zmienna_123;
Stałe Zmienne (super)globalne define( ROK", "2009"); echo Jest rok ".ROK; echo PHP_VERSION; $_GET: zawiera zmienne przekazane do skryptu za pomocą metody HTTP GET $_POST: zawiera zmienne przekazane do skryptu za pomocą metody HTTP POST $_SERVER, $_REQUEST, $_ENV, $_SESSION, $_COOKIE, $_FILES Typy danych Funkcje is_*() Boolean Integer Float, double String Object Array Null is_null() is_string() is_int() is_double() is_bool() is_array() is_numeric() is_resource()
Operatory Operator? Konkatenacja: Hello. world += == -=!= *= === /= > %= <.= <= $x++ >= $x--, or &&, and xor! $humor = zly"; $text = ($humor == dobry")? Jestem w dobrym humorze!" : Jestem w $humor humorze."; echo "$text"; Instrukcja warunkowa Instrukcja switch $mood = "sad"; if ($mood == "happy") { echo "Hooray, I'm in a good mood!"; elseif ($mood == "sad") { echo "Awww. Don't be down!"; else { echo "Neither happy nor sad but $mood."; $mood = "sad"; switch ($mood) { case "happy": echo "Hooray, I'm in a good mood!"; break; case "sad": echo "Awww. Don't be down!"; break; default: echo "Neither happy nor sad but $mood."; break;
Instrukcje iteracyjne Instrukcje iteracyjne $licznik = 1; while ($licznik <= 12) { echo $licznik." razy 2 wynosi ".($licznik * 2)."<br/>"; $licznik++; $num = 1; do { echo Wartosc rowna sie: ".$num."<br/>"; $num++; while (($num > 200) && ($num < 400)); for ($licznik=1; $licznik<=12; $licznik++) { echo $licznik." razy 2 wynosi ".($licznik * 2)."<br/>"; Instrukcje iteracyjne echo "<table style=\"border: 1px solid black;\"> \n"; for ($y=1; $y<=12; $y++) { echo "<tr> \n"; for ($x=1; $x<=12; $x++) { echo "<td style=\"border: 1px solid black; width: 25px; padding: 4px; text-align:center;\">"; echo ($x * $y); echo "</tr> \n"; echo "</table>"; echo "</td> \n"; Instrukcje iteracyjne wynik działania
Funkcje Przekazywanie parametrów przez wartość/referencję function suma($a, $b) { $wynik = $a + $b; return $wynik; echo suma(1,2); function dodaj5($num) { $num += 5; $orignum = 10; dodaj5($orignum); echo $orignum; function dodaj5(&$num) { $num += 5; $orignum = 10; dodaj5($orignum); echo $orignum; Komentarze /* To jest komentarz wieloliniowy, zamykany znacznikiem: */ Komentarz jednoliniowy: //to jest komentarz jednoliniowy, który nie potrzebuje zamknięcia #to jest komentarz jednoliniowy, który nie potrzebuje zamknięcia Tablice $to_jest_tablica = array ( element1, element2, element3, element4 ); $to_jest_tablica[] = element1 ; $to_jest_tablica[] = element2 ; $to_jest_tablica[] = element3 ; $to_jest_tablica[] = element4 ; $to_jest_tablica[0] = element1 ; $to_jest_tablica[1] = element2 ; $to_jest_tablica[2] = element3 ; $to_jest_tablica[3] = element4 ; $to_jest_tablica = array ( element1, element2, element3 ); $to_jest_tablica[] = element4 ;
Tablice asocjacyjne $osoba = array ( nazwisko => Kowalski, zawod => informatyk, wiek => 30, plec => mężczyzna ); echo $osoba[ zawod ]; Tablice wielowymiarowe $osoby = array( array( "nazwisko" => "Kowalski", "zawod" => "informatyk", "wiek" => 30, "plec" => "mężczyzna"), array( "nazwisko" => "Sakowicz", "zawod" => "księgowa", "wiek" => 24, "plec" => "kobieta"), array( "nazwisko" => "Halek, "zawod" => "architekt", "wiek" => 45, "plec" => "kobieta )); Tablice wielowymiarowe Tablice wielowymiarowe: Funkcje echo $osoby[1]; echo $osoby[1][ zawod ]; foreach ($osoby as $i) { while (list($k, $v) = each ($i)) { echo "$k... $v <br/>"; count(), sizeof() each(), list() foreach() reset() zwraca pierwszy element tablicy array_push() umieszcza element na jako ostatni w tablicy array_pop() zraca element ostatni i usuwa go array_unshift() wstawia elementy na początku tablicy array_shift()- zwaraca element 1; usuwa go; modyfikuje numerację array_merge() łączy tabele array_keys() zwraca klucze tabeli array_values() zwraca wartości z tabeli shuffle() losowy porządek elementów w tablicy
Tablice wielowymiarowe: Funkcje Funkcje obsługi złącza PHP - MySQL $tablica = array("one", "two", "three"); reset($tablica); while (list(, $value) = each($tablica)) { echo "Value: $value<br />\n"; foreach ($tablica as $value) { echo "Value: $value<br />\n"; mysql_connect() połączenie się z serwerem MySQL mysql_close() zamknięcie połączenia z serwerem MySQL mysql_errno() zwraca numer błędu ostatniego polecenia MySQL mysql_error() zwraca komunikat błędu ostatniego polecenia MySQL mysql_select_db() wybór bazy MySQL mysql_query() przesłanie polecenia SQL do serwera MySQL mysql_fetch_row() załadowanie wiersza mysql_free_result() zwolnienie pamięci Łączenie z serwerem bazy: mysql_connect() PHP: Łącznie się z serwerem MySQL $mysql_link = mysql_connect ( nazwa hosta, nazwa użytkownika hasło, nazwa bazy ) $mysql_link = mysql_connect ( localhost, kowalski hasło_kowalskiego, moja_baza ) $polaczenie = mysql_connect("localhost", uzytkownik", haslo ); if (mysql_errno()) { printf("brak polaczenia: %s\n", mysql_error()); else { exit(); echo "Jest polaczenie! <br>\n";
Funkcje błędów połączenia Informacja o hoście $polaczenie = mysqli_connect("localhost", uzytkownik", haslo ); printf("informacja o hoście: %s\n", mysql_get_host_info($mysql_link)); if (mysqli_connect_errno()) { printf("połączenie nie powiodło się: %s\n", mysqli_connect_error()); exit(); Połączenie z serwerem bazy: Przykład I $mysql = mysql_connect("localhost", "joeuser", "somepass", "testdb"); if (mysql_errno()) { else { printf("połączenie nie powiodło się: %s\n", mysql_error()); exit(); printf("informacja o hoście: %s\n", mysql_get_host_info($mysql)); mysql_close($mysql); Połączenie z serwerem bazy: Przykład II $mysql = mysql_connect("localhost", "joeuser", "somepass ); if (mysql_errno()) { else { printf("połączenie nie powiodło się: %s\n", mysql_error()); exit(); printf("informacja o hoście: %s\n", mysql_get_host_info($mysql)); mysql_select_db( testdb, $mysql); mysql_close($mysql);
Zamknięcie połączenia: mysql_close() PHP: Łącznie się z serwerem MySQL $mysql_link = mysql_connect ( nazwa hosta, nazwa użytkownika hasło, nazwa bazy ) mysql_close($mysql_link); $polaczenie = mysql_connect("localhost", uzytkownik", haslo ); $wynik = mysql_query("select SESSION_USER(), CURRENT_USER();"); $wiersz = mysql_fetch_row($wynik); echo "SESSION USER: ", $wiersz[0], "<br>\n"; echo "CURRENT USER: ", $wiersz[1], "<br>\n"; Polecenie SELECT z poziomu skryptu PHP Polecenie SELECT z poziomu skryptu PHP cd. $polaczenie = mysql_connect("localhost", uzytkownik", haslo ); if (mysql_errno()) { printf("brak polaczenia: %s\n", mysql_error()); exit(); else { echo "Jest polaczenie! <br>\n";... $wybor_bazy = mysql_select_db( nazwa_bazy", $polaczenie); $sql = "SELECT * FROM Klient"; $wynik = mysql_query($sql, $polaczenie);... if ($wynik) { while ($tablica = mysql_fetch_array($wynik, MYSQL_ASSOC)) { $imie = $tablica['imie']; $nazwisko = $tablica['nazwisko']; $email = $tablica['email']; echo "Klient: ".$imie." ".$nazwisko." ".$email."<br>\n"; else { printf("dane nie zostaly zaladowane: %s\n", mysql_error($polaczenie)); mysql_free_result($wynik); mysql_close($polaczenie);
Funkcja mysql_fetch_array() $wynik = mysql_query($sql, $polaczenie); $tablica = mysql_fetch_array($wynik, MYSQL_BOTH); $wynik = mysql_query($sql, $polaczenie); $tablica = mysql_fetch_array($wynik, MYSQL_ASSOC); Funkcja mysql_free_result() bool mysql_free_result ( resource $result ); $wynik = mysql_query($sql, $polaczenie); $tablica = mysql_fetch_array($wynik, MYSQL_NUM); $wynik = mysql_query($sql, $polaczenie); $tablica = mysql_fetch_row($wynik); Funkcja mysql_num_rows() $link = mysql_connect("localhost", "mysql_user", mysql_select_db("database", $link); "mysql_password"); $result = mysql_query("select * FROM table1", $link); $num_rows = mysql_num_rows($result); echo Zapytanie zwróciło $num_rows rekordów \n"; Polecenie CREATE TABLE Połączenie z bazą, obsługa błędów else { $sql = "CREATE TABLE Tytuly (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, $res = mysql_query($mysql, $sql); if ($res === TRUE) { else { echo "Tabela Tytuly została utworzona."; tytul VARCHAR (75))"; printf("tabela nie została utworzona: %s\n", mysql_error($mysql)); mysql_close($mysql);
Polecenie INSERT: Przykład I... Połączenie z bazą, obsługa błędów else { $sql = "INSERT INTO Tytuly (tutul) VALUES ( Heban')"; $res = mysql_query($mysql, $sql); if ($res === TRUE) { echo "Rekord został dodany."; else { printf("rekord nie został dodany: %s\n", mysql_error($mysql)); mysql_close($mysql); Polecenie INSERT: Przykład II insert.php... Połączenie z bazą, obsługa błędów else { $sql = "INSERT INTO Tytuly (tytul) VALUES ('".$_POST["tytul"]."')"; $res = mysql_query($mysql, $sql); if ($res === TRUE) { echo "Rekord został dodany."; else { printf("rekord nie został dodany : %s\n", mysql_error($mysql)); mysql_close($mysql);