Ć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