Dostęp do baz danych z serwisu www - PHP Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK Bazy Danych I, 8 Grudzień 2009
Plan Trochę teorii Uwagi techniczne Ćwiczenia Pytania Trójwarstwowy dostęp do baz danych Biblioteka ADOdb
Trójwarstwowy dostęp do baz danych Prosty ekran znakowy Interfejs webowy Złożony interfejs graficzny baza danych (ew. pliki) INNE APLIKACJE
Biblioteka ADOdb Active Data Objects DataBase - to interfejs pozwalający na komunikację z bazą danych - pozwala on na komunikację pomiędzy skryptem napisanym w języku PHP a praktycznie dowolną z popularnych baz danych: MySQL Oracle Microsoft SQL Server FOxPro ADO PostgreSQL Interbase Access ODBC
Biblioteka ADOdb Łączenie się z bazą danych include("ścieżka_do_adodb.inc.php"); ładujemy tylko kod potrzebny dla tego systemu bazodanowego, z którym się łączymy wywołując funkcję NewADOConnection( typ_bazy ), następnie tworzymy nowy obiekt klasy wywołującnewadoconnection() $db = NewADOConnection( typ_bazy ); - mysql, mssql, oracle, oci8, postgres, sybase, vfp, access, ibase w końcu łączymy się z bazą używając $db->connect: $db->connect("localhost", "root", "password", "mydb");
Biblioteka ADOdb Polecenia SQL $result = $db->execute("polecenie_sql"); if ($result === false) die("komunikat o błędzie"); Execute() zwraca obiekt wynikowy jeżeli zapytanie się powiedzie
Biblioteka ADOdb Odbieranie danych i wyświetlanie wyników - SELECT Jak czytanie z pliku. while (!$result->eof) { for($i=0, $max=$result->fieldcount(); $i < $max; $i++) print $result->fields[$i].' '; $result->movenext(); print "<br/>"; }
Biblioteka ADOdb Operacje na danych INSERT, UPDATE, DELETE DBDate() - konwertuje datę do odpowiedniego formatu $connection->affected_rows() - zwraca ilość wierszy zmienionych/skasowanych przez ostatnie zapytanie UPDATE lub DELETE) $recordset->insert_id() - zwracające ostatni numer wygenerowany przez INSERT dla kolumn auto_increment Nie wszystkie systemy bazodanowe posiadają te funkcje!
Biblioteka ADOdb Inne ciekawe funkcje $recordset->move($pos) - przewija wyniki do określonego wiersza (przesuwanie w przód dla wszystkich baz, nie wszystkie wstecz) $recordset->recordcount() - zwraca liczbę wierszy objętych ostatnim zapytaniem SQL (zwraca -1, gdy funkcja nie jest dostępna dla danej bazy) $recordset->getarray() - zwraca wynik jako tablicę
Biblioteka ADOdb Inne ciekawe funkcje c.d. rs2html($recordset) - jest funkcją, która generuje tabelkę w HTML u w oparciu o rekordy $recordset przesłane do niej include( adodb.inc.php'); include('tohtml.inc.php'); $conn = &ADONewConnection('mysql'); $conn->pconnect('localhost','userid','password','database'); $rs = $conn->execute( SELECT * FROM table'); rs2html($rs); Jest wiele pomocniczych funkcji, dokładny spis i opis znajduje się w dokumentacji dostępnej tutaj http://php.weblogs.com/adodb_manual.
Biblioteka ADOdb Na pożegnanie. Close()
Uwagi techniczne przed ćwiczeniami Instalujemy ADOdb_lite. - w tym celu należy skopiować katalog adodb_lite z zawartością wszystkich podkatalogów do katalogu public_html (polecenie mc)
Ćwiczenia Ćwiczenie 1 Połączymy się z naszą uczelnianą bazą MySQL. Aby to zrobić w pliku ado_1.php pomiędzy tagami PHP wpiszmy: include("adodb_lite/adodb.inc.php"); $db = NewADOConnection( mysql ); $db->connect("mysql.agh.edu.pl", "6 ", "***", 6 ");
Ćwiczenia Ćwiczenie 2 Wypiszmy imiona, nazwiska i adresy e-mailowy z tabeli SzczegoloweDaneCzlonkow: $result = $db->execute("select Imie, Nazwisko, Email FROM SzczegoloweDaneCzlonkow"); if ($result === false) die("nie udało się :("); print "Dane z tabeli:<br/>"; while (!$result->eof) { for ($i=0, $max=$result->fieldcount(); $i<$max; $i++) print $result->fields[$i].' '; $result->movenext(); print "<br/>"; }
Ćwiczenia Ćwiczenie 3 Wstaw swoje dane do tabeli SzczegoloweDaneCzlonkow i wypisz ponownie dane z tej tabeli: $i=$_post["imie"]; $n=$_post["nazwisko"]; $e=$_post["email"]; $result = $db->execute("insert INTO SzczegoloweDaneCzlonkow (Imie, Nazwisko, Email) VALUES ('$i','$n','$e')"); if ($result === false) die("nie udało się :(");
Ćwiczenia Ćwiczenie 4 Stwórzmy formularz w HTML u do logowania się do bazy plik PHP łączący nas z bazą (żeby sprawdzić czy się udało wykonajmy jakieś polecenie SQL): include("adodb_lite/adodb.inc.php"); $db = NewADOConnection( $_POST[" type "] ); $db->connect($_post["host"], $_POST["root"], $_POST["psw"], $_POST["mydb"]);
Źródła http://phplens.com/adodb/adodb_tutorial_pl.html http://pl.wikipedia.org/wiki/adodb
Pytania