Prezentacja programu PowerPoint
Transkrypt
Prezentacja programu PowerPoint
Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 11 dr inż. Jacek Mazurkiewicz e-mail: [email protected] Terminarz czasów ostatecznych 10.06.2010 – Zaliczenie Laboratorium IBD - godz. 8:00 – 13:00, s. 16 22.06.2010 – Egzamin #0 IBD - godz. 9:45 – 11:20, s. 7 02.07.2010 – Egzamin #1 IBD - godz. 13:00 – 15:00, s. 7 20.09.2010 – Egzamin Poprawkowy IBD - godz. 10:00 – 12:00, s. 7 2 ODBC (1) Open Database Connectivity (ODBC) to powszechnie stosowany interfejs API (application programming interface) służący do łączenia się z bazami danych oparty na specyfikacji Call Level Interface pochodzącym z X/Open oraz ISO/IEC, jako języka dostępu do danych używa SQL istnieje kilka implementacji ODBC API dla systemów Uniksowych, w systemie Windows ODBC jest zwykle instalowany razem z systemem. PHP może obsługiwać każdą implementację ODBC, ale musi być w tym celu odpowiednio skonfigurowany, ponieważ ODBC nie jest w chwili obecnej domyślną opcją. w PHP istnieją cztery opcje konfiguracji związane z ODBC: -with-unixODBC, --with-custom-ODBC, --with-iodbc oraz --with-openlink 3 ODBC (2) ODBC tym różni się od MySQL i innych API baz danych tym, że wszystkie odwołania do bazy danych wykonuje za pośrednictwem sterownika bazy danych należy zainstalować program zarządzający sterownikami, na przykład unixODBC, a następnie sterownik do twojego systemu bazy danych aplikacja wywołując funkcję kontaktuje się z zarządcą sterowników zarządca ten jest odpowiedzialny za załadowanie odpowiedniego sterownika bazy danych i przekazanie do niego żądania sterownik bazy danych wywołuje odpowiednią funkcję bazy danych, która realizuje nasze żądanie. 4 ODBC (3) plik odbc.ini zawiera opis źródeł danych: po zainstalowaniu i skonfigurowaniu wszystkich komponentów korzystanie z ODBC w PHP jest bardzo podobne do korzystania z MySQL [localdsn] Server=satabase.server.com Driver=OOB Port=8888 Transport=tcpip LogonUser=prodplaner LogonAuth=password TargetDSN=LocalOracle TargetUser=prodplaner TargetAuth=password CREATE TABLE employees ( id tinyint(4) DEFAULT '0' NOT NULL auto_increment, first varchar(20), last varchar(20), adress varchar(255), position varchar(50), PRIMARY KEY (id), UNIQUE id (id) ) 5 ODBC (4) <html> <head> <title>Pobieranie danych z MySQL</title> </head> <body> <?php // Ukrywamy komunikaty błędów i sami je obsługujemy $aDBLink = @mysql_connect( "db.server.com", "user", "pass" ); if ( !empty( $aDBLink ) ) { // wybór bazy danych MySQL if ( mysql_select_db( "mydb", $aDBLink ) == True ) { $aSQL = "select * from employees"; // Wykonanie zapytania SELECT $aQResult = mysql_query( $aSQL, $aDBLink ); if ( $aQResult == True ) { // Pobranie wiersza danych i wypisanie dwóch pól while ( $aRow = mysql_fetch_array( $aQResult ) ) { $aFName = $aRow["first"]; $aPos = $aRow["position"]; print( "$aFName, $aPos<br>" ); } 6 ODBC (5) mysql_free_result( $aQResult ); } else { print( "Błąd wykonania zapytania<br>" ); } } else { print( "Błąd wyboru bazy danych<br>" ); } } else { print( "Błąd przy podłączaniu do bazy danych<br>" ); } ?> </body> </html> 7 ODBC (6) <html> <head> <title>Pobioeranie danych z bazy danych ODBC</title> </head> <body> <?php putenv("ODBCINI=/usr/local/unixODBC/etc/odbc.ini"); // Ukrywamy komunikaty błędów i sami je obsługujemy $aDBLink = @odbc_connect( "localdsn", "prodplanner", "agdec" ); if ( !empty( $aDBLink ) ) { $aSQL = "select * from employees"; $aQResult = @odbc_exec( $aDBLink, $aSQL ); if ( $aQResult == True ) { $aRow = array(); $aRowNum = 1; while ( odbc_fetch_into( $aQResult, $aRowNum, &$aRow ) ) { $aFName = $aRow[1]; $aPos = $aRow[4]; print( "$aFName, $aPos<br>" ); $aRowNum++; } 8 ODBC (7) odbc_free_result( $aQResult ); } else { print( "Błąd wykonania zapytania<br>" ); } } else { print( "Błąd podłączenia do bazy danych<br>" ); } ?> </body> </html> nazwy funkcji są inne, koncepcja jest nieomal identyczna wywołanie putenv() na początku skryptu umieszcza w środowisku programu ścieżkę do pliku inicjalizującego ODBC do pól tabeli odwołujemy się dla uproszczenia za pomocą numerów a nie nazwy 9