Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych



Podobne dokumenty
PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Podyplomowe Studium Programowania i Baz Danych

Podyplomowe Studium Programowania i Baz Danych

Język SQL, zajęcia nr 1

Wykład 5: PHP: praca z bazą danych MySQL

Relacyjne bazy danych. Podstawy SQL

Wykład 5. SQL praca z tabelami 2

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Bazy danych 7. SQL podstawy

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Relacyjne bazy danych. Podstawy SQL

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Wykład 4. SQL praca z tabelami 1

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Bazy danych. Polecenia SQL

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Wykład 05 Bazy danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

Bazy danych 5. Samozłaczenie SQL podstawy

Podstawy programowania III WYKŁAD 2

Bazy danych 6. Klucze obce. P. F. Góra

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Projektowanie systemów baz danych

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Bazy danych. Dr inż. Paweł Kasprowski

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Instalacja MySQL.

Autor: Joanna Karwowska

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Wykład 2. SQL 1 Structured Query Lenguage

Ref. 7 - Język SQL - polecenia DDL i DML

Bazy danych i usługi sieciowe

Wykład 6. SQL praca z tabelami 3

Bazy Danych i Usługi Sieciowe

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Wykład 6: PHP: praca z bazą danych MySQL, cz.2

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Programowanie w Ruby

SIECI KOMPUTEROWE I BAZY DANYCH

Systemy GIS Tworzenie zapytań w bazach danych

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Bazy danych 4. SQL podstawy. P. F. Góra

PHP: bazy danych, SQL, AJAX i JSON

Internetowe bazy danych

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

P o d s t a w y j ę z y k a S Q L

Autor: Joanna Karwowska

Dr Michał Tanaś(

Dokumentacja SQL API 1

Baza danych do przechowywania użytkowników

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Widok Connections po utworzeniu połączenia. Obszar roboczy

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Bloki anonimowe w PL/SQL

Bazy danych. dr Radosław Matusik. radmat

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

PODSTAWY BAZ DANYCH 13. PL/SQL

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Wykład 8. SQL praca z tabelami 5

Przestrzenne bazy danych Podstawy języka SQL

Oracle11g: Wprowadzenie do SQL

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Spis treści. Wstęp 5 Rozdział 1. Praca z AJAX-em 9. Rozdział 2. Współpraca ze skryptami PHP 55. Rozdział 3. Obsługa formularzy 81

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Cele. Definiowanie wyzwalaczy

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

Oracle PL/SQL. Paweł Rajba.

Bazy danych - Materiały do laboratoriów VIII

Podstawy programowania (PHP/Java)

PHP i MySQL dla każdego / Marcin Lis. Wyd. 3. Gliwice, cop Spis treści

Język SQL, zajęcia nr 2

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Paweł Rajba

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

SQL 4 Structured Query Lenguage

Internetowe bazy danych

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Bazy danych w PHP dla początkujących

Zarządzanie systemami informatycznymi. Zarządzanie internetową bazą danych MySQL

Transkrypt:

Języki programowania wysokiego poziomu PHP cz.4. Bazy danych

PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł mysqli ma dwa interfejsy: proceduralny i obiektowy) PostgreSQL Oracle MS SQL Server Istnieją również rozszerzenia (biblioteki), zapewniające wspólny interfejs dostępu do baz danych, niezależnie od ich typu. Dla PHP jest to biblioteka PEAR

PHP i bazy danych Przebieg czynności podczas korzystania z bazy danych Nawiązanie połączenia z serwerem baz danych Wybór bazy danych oraz uwierzytelnienie użytkownika tej bazy danych Ustawienie zestawu znaków dla połączenia z serwerem bazy danych Wykonanie operacji na bazie danych Wykorzystanie wyników zwróconych z bazy danych Zamknięcie połączenia W przypadku MySQL i modułu mysqli, większość czynności wykonuje obiekt mysqli, tworzony w pierwszym kroku

PHP i bazy danych Nawiązanie połączenia, wybór bazy danych oraz uwierzytelnienie Potrzebne dane: - Nazwa lub adres IP serwera baz danych (w praktyce, ze względów bezpieczeństwa na ogół localhost)\ - Nazwa i hasło użytkownika bazy danych - Nazwa bazy danych (użytkownik musi mieć uprawnienia do tej bazy danych) Dane te najlepiej zapisać w postaci definicji stałych języka PHP: <?php define (DBUSER, "pik"); define (DBPASS, "kernel"); define (DBNAME, "pik_webapp");

PHP i bazy danych Nawiązanie połączenia, wybór bazy danych oraz uwierzytelnienie Wszystkie potrzebne czynności wykonuje konstruktor obiektu mysqli. $conn = new mysqli (<host>, <użytkownik>, <hasło>, <baza-danych>); $conn = new mysqli ("localhost", "pik", " ", "pik_webapp");

PHP i bazy danych Nawiązanie połączenia, wybór bazy danych oraz uwierzytelnienie Do sprawdzenia powodzenia tej operacji służy funkcja mysqli_connect_errno(), zaś funkcja mysqli_connect_error(), zwraca komunikat o błędzie: $conn = new mysqli ("localhost", "pik", " ", "pik_webapp"); if (mysqli_connect_errno()!=0) { $msg = mysqli_connect_error(); echo "Wystąpił błąd: $msg"; } else

PHP i bazy danych Wykonanie operacji na bazie danych Do wykonywania wszelkich operacji na bazie danych służy metoda query() obiektu mysqli: $sql = "<zapytanie-sql>"; $res = $conn->query ($sql); Metoda ta zwraca jeden z trzech możliwych rezultatów: - FALSE jeżeli wystąpi błąd, - TRUE jeżeli operacja kończy się powodzeniem, ale nie zwraca rezultatu (np. DELETE, UPDATE) - Obiekt mysqli_result, z którego można pobierać wyniki, np. przy pomocy funkcji fetch_assoc() z tego względu do sprawdzania wyniku metody query() należy używać operatora identyczności (===) a nie równości (==).

PHP i bazy danych Ustawienie zestawu znaków Zestaw znaków dla połączenia z serwerem bazy danych ustawia zapytanie SQL SET: $sql = "SET NAMES 'utf8'"; $res = $conn->query ($sql); Ustawienie tego samego zestawu znaków do komunikacji serwer bazy danych PHP oraz PHP przeglądarka gwarantuje prawidłowe zapisywanie i odczytywanie danych.

PHP i bazy danych Wykorzystanie wyników zwróconych z bazy danych Jeżeli zapytanie SQL np. SELECT zwraca wynik, to ma on postać obiektu mysqli_result. Kolejne wiersze można odczytywać funkcją fetch_assoc(), najlepiej w pętli while: $sql = "SELECT * FROM Users"; $res = $conn->query ($sql); if ($res===false) // obsługa błędu else { while (($row=$res->fetch_assoc())!==null) // korzystamy z tabeli $row }

PHP i bazy danych Wykorzystanie wyników zwróconych z bazy danych Każdy taki wiersz odczytany przez fetch_assoc() jest tablicą asocjacyjną <kolumna> -> <wartość>: echo "<table>"; echo "<tr> <th>nazwa <th>hasło"; while (($row=$res->fetch_assoc())!== NULL) { $name = $row["name"]; $pass = $row["pass"]; echo "<tr> <td>$name <td>$pass"; } echo "</table>;

PHP i bazy danych Zamknięcie połączenia Połączenie z bazą danych zamyka metoda close() obiektu mysqli utworzonego podczas nawiązywania połączenia: $conn = new mysqli( ); // dostęp do bazy danych $conn->close(); Niepotrzebne połączenie należy zamknąć, aby zwolnić wykorzystywane przez nie zasoby.

PHP i bazy danych Podsumowując : $conn = new mysqli ("localhost", " ", " ", " "); if (mysqli_connect_errno()!=0) { $msg = mysqli_connect_error(); echo "Wystąpił błąd: $msg"; } else { $sql = "SELECT * FROM Users"; $res = $conn->query ($sql); while (($row=$res->fetch_assoc())!==null) { $name = $row["name"]; echo "<tr> <td>$name <td> "; } $conn->close(); }

PHP i bazy danych Względy bezpieczeństwa Wprowadzanie danych użytkownika do zapytać SQL może otworzyć drogę dla ataków tzw. wstrzykiwania SQL (SQL injection). Przykładowe zapytanie (sprawdzenie nazwy i hasła): SELECT * FROM Users WHERE name='$n' Jeżeli w formularzu haker wpisze "xxx'; DELETE * FROM Users", to zapytanie: SELECT * FROM Users WHERE name='xxx'; DELETE * FROM Users drastycznie zmniejszy liczbę zdefiniowanych użytkowników

PHP i bazy danych Względy bezpieczeństwa Wniosek: dane należy weryfikować - dane liczbowe przez konwersję: $x = (int) $_POST["x"]; łańcuchy znaków przez konwersję na html: $s = mysqli::real_escape_string($_post["s"]);

Języki programowania wysokiego poziomu Wprowadzenie do SQL

SQL Tworzenie bazy danych Składnia CREATE <nazwa-bazy-danych> DEFAULT CHARACTER SET <zestaw-znaków> DEFAULT COLLATE <sortowanie> Przykład CREATE Forum DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_polish_ci

SQL Typy danych INT - liczba całkowita, odpowiednik long w C++ BIGINT -liczba całkowita duża, często jest kluczem głównym FLOAT - liczba zmiennoprzecinkowa DATE - data TIME - czas TIMESTAMP - data i czas VARCHAR (n) - ciąg znaków o zmiennej długości, max n znaków BLOB - dane binarne

SQL Atrybuty danych NOT NULL - kolumna nie może być pusta wymagane jest podanie wartości (za wyjątkiem kolumny, dla której podano DEFAULT lub AUTO_INCREMENT) DEFAULT wartość - domyślna wartość AUTO_INCREMENT - automatyczna inkrementacja (zwykle dla kluczy głównych) PRIMARY KEY - klucz główny UNIQUE - nie są dopuszczalne duplikaty wartości

SQL Dyrektywy ENGINE = <nazwa-silnika> Najczęściej wykorzystuje się silniki: - InnoDB zaawansowane możliwości blokowania/transakcji - MyISAM szybszy, ale nie obsługuje transakcji

SQL Tworzenie tabel Składnia CREATE TABLE <nazwa-tabeli> ( <nazwa-kolumny> <typ> [atrybuty] [, ] ) [atrybuty dyrektywy] Przykład CREATE TABLE Users ( userid BIGINT AUTO_INCREMENT PRIMARY KEY, login VARCHAR(20) UNIQUE NOT NULL ) ENGINE = InnoDB

SQL Usuwanie tabel i baz danych Składnia DROP TABLE <nazwa-tabeli> DROP <nazwa-bazy-danych> Przykład DROP TABLE Users DROP Forum

SQL Wprowadzanie danych Składnia INSERT INTO <nazwa-tabeli> VALUES (wartość, wartość, ) INSERT INTO <tabela> (kolumna, kolumna, ) VALUES (wartość, wartość, ) Przykład INSERT INTO Users (login, passwd) VALUES ('root', 'kernel')

SQL Pobieranie danych jedna tabela Składnia SELECT <co?> FROM <tabela> [ WHERE <warunki> ] Jeżeli dane są pobierane z jednej tabeli, to jako <co?> można podać: * - wszystkie kolumny, <kolumna> [, <kolumna>, ] - wybrane kolumny Przykład SELECT * FROM Users SELSECT login, passwd FROM Users

SQL Pobieranie danych jedna tabela Składnia SELECT <co?> FROM <tabela> [ WHERE <warunki> ] Do określania warunków można użyć: - operatorów relacji (=, <>, >, >=, <, <=) - operatora IS NULL - operatora LIKE (w rodzaju: LIKE '<znaki>%') Przykład SELECT * FROM Users WHERE login LIKE 'r%' SELSECT passwd FROM Users WHERE login='root'

SQL Łączenie wyrażeń warunkowych Składnia SELECT <co?> FROM <tabela> [ WHERE <warunki> ] Wyrażenia warunkowe można łączyć używając operatorów - AND koniunkcja - OR dysjunkcja Przykład SELECT * FROM Posts WHERE autorid=1 AND thread=5

SQL Określanie zbioru oraz zakresu wartości w warunkach Składnia SELECT <co?> FROM <tabela> [ WHERE <warunki> ] W wyrażeniach warunkowych można stosować operatory: - IN <zbiór-wartości> - BETWEEN <wartość> AND <wartość> Przykład SELECT * FROM Users WHERE userid IN (1, 3, 5) SELECT * FROM Posts WHERE date BETWEEN '2009-01-01' AND NOW()

SQL Pobieranie danych więcej tabel Składnia SELECT <co?> FROM <tabela> [, <tabela>, ] [ WHERE <warunki> ] Domyślnie tworzony jest iloczyn kartezjański tabel, dlatego warunki trzeba podać typowo przez pary kluczy Przykład SELECT Users.login, Posts.date, Posts.msg FROM Users, Posts WHERE Users.userid = Posts.userid SELECT login, date, msg FROM Users, Posts WHERE userid = userid

SQL Pobieranie danych użycie dyrektyw Składnia SELECT <co?> FROM <tabela> [ WHERE <warunki> ] [ dyrektywy ] ORDER BY <kolumna> [ASC DESC] [, <kolumna>, ] LIMIT n, m wiersze od n do m (numeracja od zera!) Przykład SELECT login, date, msg FROM Users, Posts WHERE userid = userid ORDER BY date DESC, login ASC LIMIT 0, 20

SQL Modyfikacja danych Składnia UPDATE <tabela> SET <kolumna> = <wartość> [, <kol>=<wart>] [ WHERE <warunki> ] Przykład UPDATE Users SET passwd = 'kernel' WHERE login = 'root'

SQL Usuwanie danych Składnia DELETE FROM <tabela> [ WHERE <warunki> ] Do określania warunków można użyć: - operatorów relacji (=, <>, >, >=, <, <=) - operatora LIKE (w rodzaju: LIKE '<znaki>%') Przykład DELETE FROM Users WHERE login = 'pik' DELETE FROM Posts WHERE msg LIKE '%k %' DELETE FROM Posts