MySQL - przykłady
Z Uniwersyteckie Centrum Informatyczne
Zakładamy, że nazwą naszej przykładowej bazy na serwerze MySQL jest 'arch', baza danych ulokowana jest na serwerze koala.uci.umk.pl oraz, że posiadamy w obrębie tej bazy jedną tabelę o nazwie 'studenci' wypełnioną w sposób następujący:
|
Czyli posiadamy tabelę 'studenci' o trzech polach: 'Imie', Nazwisko', 'nr_indeksu'. Aktualnie w tabeli znajdują się dane 3 osób.
Zobaczmy jak mogłyby wyglądać w języku PHP podstawowe operacje jakie możemy wykonywać na bazie:
Spis treści |
Łączenie się z bazą SQL
Łączenie się z serwerem SQL możemy zrealizować w sposób następujący:
<? $baza='arch'; $deskr = mysql_connect("koala.uci.umk.pl","archsqluser","***hasło***") or die ("Nie mogę połączyć się z serwerem SQL."); print ("Połączenie z serwerem SQL ustanowione.");
Pobieranie danych z bazy i wyświetlanie na stronie WWW
Gdy jesteśmy już połączeni z serwerem, jako aktywną ustawiamy naszą bazę 'arch' i zadajemy serwerowi zapytania SQL (queries).
$query = "SELECT * FROM studenci"; mysql_select_db($baza); $wynik = mysql_query($query); while ($krotka = mysql_fetch_object($wynik)) { print "$krotka->nr_indeksu "; print "$krotka->Imie "; print "$krotka->Nazwisko"; print "\n"; } mysql_close($deskr); ?>
Składając powyższe kawałki kodu w jedną całość otrzymujemy prosty program, który łaczy się z serwerem SQL, pobiera dane z tabeli 'studenci' w bazie 'arch' i wyswietla dane z tej tabeli wg kolejności pól: nr_indeksu, Imie, Nazwisko. Wynik jego wywołania powinien być zbliżony do tego:
88276 | Jan | Kowalski |
88277 | Andrzej | Nowak |
88278 | Katarzyna | Lewandowska |
Wyświetlanie danych z bazy na stronie można urozmaicić stosując np. w kodzie PHP znaczniki HTML.
Przykład skryptu CGI
Innym sposobem korzystania na stronach WWW z bazy danych jest wykorzystanie skryptów CGI. Przykład skryptu CGI napisany w Perlu komunikujący się z naszą przykładową bazą 'arch' znajduje się poniżej.
Niewątpliwą zaletą używania CGI w stosunku do kodu PHP umieszczonego w stronach WWW jest możliwość ukrycia haseł dostępowych do bazy przed osobami niepowołanymi. Pomimo, że ukrywanie hasła użytkownika bazy służącego do odczytu informacji jest nam niejednokrotnie zbędne, jednak ukrycie haseł użytkowników MySQL posiadających prawa zapisu do bazy czy też modyfikowania struktury bazy jest tutaj obowiązkowa. W celu tym wystarczy nadać odpowiednie prawa dostępu skryptom CGI w katalogu domowym.
Przykład
#!/usr/local/perl5.6.0/bin/perl use DBI; use CGI; $c = new CGI; $driver = "mysql"; $database="arch"; $hostname="koala.uci.umk.pl"; $port="3306"; $user="archsqluser"; $password="***hasło***"; $dsn = "DBI:$driver:database=$database;host=$hostname;port=$port"; print $c->header ("text/html"); my $dbh = DBI->connect($dsn, $user, $password); my $sth = $dbh->prepare("SELECT * FROM studenci"); $sth->execute(); while (my $ref = $sth->fetchrow_hashref()) { print "Nazwisko = $ref->{'Nazwisko'}\n"; } $sth->finish(); $dbh->disconnect();
Powyższy program CGI drukuje wszystkie nazwiska studentów z tabeli 'studenci' bazy 'arch'.
Dopisywanie do bazy
Analogicznie można napisać skrypt CGI dopisujący dane do bazy. Tym razem używamy użytkownika 'archsqlupdate'. Poniższy program dopisze dane jednego studenta do tabeli 'studenci'.
#!/usr/local/perl5.6.0/bin/perl use DBI; $driver = "mysql"; $database="arch"; $hostname="koala.uci.umk.pl"; $port="3306"; $user="archsqlupdate"; $password="*****hasło*****"; $dsn = "DBI:$driver:database=$database;host=$hostname;port=$port"; my $dbh = DBI->connect($dsn, $user, $password); my $sth = $dbh->prepare("INSERT INTO studenci (Imie, Nazwisko, nr_indeksu) VALUES ("Elżbieta", "Szymańska", "88279")"); $sth->execute(); $sth->finish(); $dbh->disconnect();
Metodę powyższą można łatwo przystosować do ładowania większej ilości danych np. z pliku poprzez dodanie pętli wykonującej cyklicznie komendę 'INSERT' lub wykorzystując instrukcję MySQL 'LOAD DATA INFILE'. Przy czym aby skorzystać z tej ostatniej medoty należy posiadać odpowiednio przygotowany plik tekstowy z danymi do umieszczenia w bazie.