Ćwiczenie 7
Php - połączenie z bazą MySql, funkcje MySql
http://php.webhelp.pl/
http://www.w3schools/php
W PHP można stosować programowanie obiektowe.
Aby połączyć się z serwerem i bazą MySql należy wykonać następujący skrypt:
<?php
// nawiązanie połączenia z serwerem
$connection = @mysql_connect('nazwa_serwera', 'uzytkownik', 'haslo')
// w przypadku niepowodzenia wyświetla się komunikat
or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
// jeśli połączenie nawiązane ;-)
echo "Udało się połączyć z serwerem!<br />";
// nawiązanie połączenia z bazą danych
$db = @mysql_select_db('nazwa_bazy', $connection)
// w przypadku niepowodzenia wyświetla się komunikat
or die('Brak polaczenia z bazą danych<br />Błąd: '.mysql_error());
// połączenie nawiązane ;-)
echo "Udało się połączyć z bazą danych!";
// zamknięcie połączenia
mysql_close($connection);
?>
albo zdefiniować funkcję i umieścić ją w pliku zewnętrznym:
<?php
/*
plik connection.php - konfiguracja połączenia z bazą danych
*/
function connection() {
// serwer
$mysql_server = "localhost";
// admin
$mysql_admin = "uzytkownik";
// hasło
$mysql_pass = "haslo";
// nazwa bazy
$mysql_db = "baza_danych";
// nawiązanie połączenia z serwerem MySQL
@mysql_connect($mysql_server, $mysql_admin, $mysql_pass)
or die('Brak połączenia z serwerem MySQL.');
// połączenie z bazą danych
@mysql_select_db($mysql_db)
or die('Błąd wyboru bazy danych.');
}
?>
Potem wystarczy taki plik podłączyć za pomocą instrukcji require() i wywołać funkcję connection(), aby mieć aktywne połączenie do serwera i bazy danych.
<?php
// podłączamy plik connection.php
require "connection.php";
// wywołujemy funkcję connection()
connection();
?>
Funkcje umożliwiające operacje na bazie MySql:
mysql_affected_rows -- Zwraca ilość wierszy przetworzonych w poprzedniej operacji MySQL
mysql_change_user -- Zmienia użytkownika zalogowanego w aktywnym połączeniu
mysql_client_encoding -- Zwraca nazwę sposobu kodowania
mysql_close -- Zamyka połączenie z serwerem MySQL
mysql_connect -- Otwiera połączenie z serwerem MySQL
mysql_create_db -- Tworzy bazę MySQL
mysql_data_seek -- Przesuwa wewnętrzny wskaźnik wyniku
mysql_db_name -- Pobiera dane wynikowe
mysql_db_query -- Wysyła zapytanie do bazy MySQL
mysql_drop_db -- Usuwa bazę MySQL
mysql_errno -- Zwraca liczbową wartość kodu błędu z poprzedniej operacji MySQL
mysql_error -- Zwraca tekst komunikatu błędu z ostatniej operacji MySQL
mysql_escape_string -- Dodaje znaki unikowe na użytek mysql_query
mysql_fetch_array -- Zapisuje wiersz wyniku w tablicy asocjacyjnej, numerycznej lub w obu
mysql_fetch_assoc -- Zapisuje wiersz wyniku w tablicy asocjacyjnej
mysql_fetch_field -- Pobiera z wyniku informacje o kolumnie i zwraca jako obiekt
mysql_fetch_lengths -- Pobiera długość każdego pola w wierszu wyniku
mysql_fetch_object -- Zapisuje wiersz wyniku jako obiekt
mysql_fetch_row -- Zapisuje wiersz wyniku w tablicy wyliczeniowej
mysql_field_flags -- Pobiera flagi dla danego pola w wyniku
mysql_field_len -- Zwraca długość danego pola
mysql_field_name -- Podaje nazwę danego pola w wyniku
mysql_field_seek -- Przesuwa wskaźnik wyniku do wybranego pola
mysql_field_table -- Pobiera nazwę tabeli w której znajduje się dane pole
mysql_field_type -- Pobiera typ podanego pola
mysql_free_result -- Zwalnia pamięć zajmowaną przez wynik
mysql_get_client_info -- Pobiera informacje o kliencie MySQL
mysql_get_host_info -- Pobiera informacje o hoście MySQL
mysql_get_proto_info -- Pobiera informacje o protokole MySQL
mysql_get_server_info -- Pobiera informacje o serwerze MySQL
mysql_info -- Pobiera informacje o ostatnim zapytaniu
mysql_insert_id -- Podaje numer ID wygenerowany podczas ostatniej operacji INSERT
mysql_list_dbs -- Pobiera nazwy baz dostępnych na serwerze MySQL
mysql_list_fields -- Pobiera informacje o polach tabeli MySQL
mysql_list_processes -- Zwraca listę procesów MySQL
mysql_list_tables -- Pobiera listę tabel z bazy MySQL
mysql_num_fields -- Zwraca liczbę pól w wyniku
mysql_num_rows -- Zwraca liczbę wierszy w wyniku
mysql_pconnect -- Otwiera stałe połączenie z serwerem MySQL
mysql_ping -- Sprawdza połączenie z serwerem, lub nawiązuje połączenie, jeśli go nie było
mysql_query -- Wysyła zapytanie do serwera MySQL
mysql_real_escape_string -- Dodaje znaki unikowe dla potrzeb poleceń SQL, biorąc po uwagę zestaw znaków używany w połączeniu.
mysql_result -- Zwraca dane wynikowe
mysql_select_db -- Wybiera bazę MySQL
mysql_stat -- Pobiera aktualny stan systemu
mysql_tablename -- Zwraca nazwę tabeli
mysql_thread_id -- Zwraca id bieżącego wątku
mysql_unbuffered_query -- Wysyła zapytanie do serwera MySQL nie pobierając i buforując wyniku
Funkcja mysql_num_rows służy do zwracania ilości pól znajdujących się we wskazanym zbiorze wyników:
<?php
$zapytanie = "SELECT nazwy_pol FROM nazwa_tabeli WHERE warunek";
$wykonaj = mysql_query($zaptanie);
$znaleziono = mysql_num_rows($wykonaj);
?>
Po wykonaniu tej operacji zmienna $znaleziono będzie zawierać ilość wyszukiwanych elementów. Można wydrukować ile razy znaleziono poszukiwane wyrażenie, a potem znalezione elementy:
<?php
$zapytanie = "SELECT * FROM student WHERE imie LIKE \"%a%\" ORDER BY DESC";
$wykonaj = mysql_query($zaptanie);
$znaleziono = mysql_num_rows($wykonaj);
if ($znaleziono == "0") {
print "Nie znaleziono żadnego studenta z literą 'a' w imieniu";
}
else {
print "Znaleziono $znaleziono studentów z literą 'a' w imieniu.<br><br>";
}
while ($row = mysql_fetch_array($wykonaj)) {
print "Imie studenta: <b>".$row[`imie']." </b><br>Lata gry: <b>".$row['imie']." </b>";
}
?>
...........
Jeśli mamy dostęp do tabeli, którą nie my utworzyliśmy i chcemy się dowiedzieć np. nazwy kolumny czy jaka jest maksymalna długość znaków w danym polu, to nazwy pól możemy wydobyć za pomocą funkcji mysql_field_name(id_wyników, indeks_pola)
$zapytanie = "SELECT * FROM student";
$wykonaj=mysql_query($zapytanie);
$nazwa_pola = mysql_field_name($wykonaj, 0);
Po wykonaniu tej operacji zmienna $nazwa_pola będzie zawierać nazwę pierwszego pola (indeks 0) w tym przypadku zmienna zwróci wartość id.
Maksymalną ilość znaków danego pola otrzymujemy przy użyciu funkcji mysql_field_len(id_wyników, indeks_pola) :
$zapytanie = "SELECT * FROM student";
$wykonaj=mysql_query($zapytanie);
$dlugosc_pola = mysql_field_len($wykonaj, 0);
Nazwę tabeli, z której pochodzi wskazane pole możemy uzyskać korzystając z komendę mysql_field_table(id_wyników, indeks_pola) w następujący sposób:
$zapytanie = "SELECT * FROM student";
$wykonaj=mysql_query($zapytanie);
$nazwa_tabeli = mysql_field_table($wykonaj, 0);
Na zaliczenie zajęć należy napisać skrypty PHP z wykorzystaniem co najmniej 10 funkcji MySql, wykonujące:
1. Nawiązanie połączenia z bazą MySql
2. Dodawanie i usuwanie przykładowych danych dla każdej z tabel tabel ( z komentarzem, gdy jest to niemożliwe).
3. Prezentację możliwości bazy (min. 10 zapytań w tym 5 z podzapytaniami)
2014-04-07 T. Wiśniewska
TECHNIKI INTERNETOWE - laboratorium
INFORMATYKA III rok
studia stacjonarne I stopnia
sem. letni r. a. 2013/2014