TECH INT lab7 2014, Studia - Politechnika Opolska, Semestr 6, Techniki Internetowe


Ć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



Wyszukiwarka