Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

PHP ja MySQL Verkkotekniikan jatkokurssi Kevät 2003

Samankaltaiset esitykset


Esitys aiheesta: "PHP ja MySQL Verkkotekniikan jatkokurssi Kevät 2003"— Esityksen transkriptio:

1 PHP ja MySQL Verkkotekniikan jatkokurssi Kevät 2003
Ville Seppänen

2 MySQL - yleistä Yleisimmin käytetty avoimen lähdekoodin relaatiotietokantapalvelin, Neljä jakelumuotoa MySQL Standard: Perusversio, nykyisin varustettu ACID-transaktioita tukevalla InnoDB-moottorilla MySQL Max: Uusimmilla ja laajimmilla ominaisuuksilla varustettu jakelu, sisältää mm. Berkeley-moottorin, SSL-tuen, tauluen jaon useaan tiedostoon MySQL Pro: Standard-jakelu kaupallisella lisenssillä MySQL Classic: Karsittu versio ilman InnoDB:tä

3 MySQL - yleistä Lukuisille järjestelmäalustoille, mm. Linux, Microsoft Windows, Novell NetWare, sekä useimmat vapaat ja kaupalliset Unixit Alusta lähtien keskittynyt suorituskykyyn ja nopeuteen Edellisestä johtuen aiemmat versiot ovat tarjonneet epätäydellisen SQL-tuen (osittainen ANSI SQL 99- tuki; mm. ei mahdollisuutta käyttää alikyselyjä) ja puutteellisen transaktiotuen (oletustaulutyyppi MyISAM ei tue transaktioita eivätkä mahdollistaneet viiteavainten käyttöä

4 MySQL - yleistä Versiossa 4. SQL-tukea parannettu (mm. UNION) ja InnoDB mahdollistaan transaktiot (tosin vain rivitason lukituksella) sekä viiteavaimet Ohjelmointikielille toteutettuja ajureita mm. MySQL Connector/J (Java), MySQL Connector/C++, MySQL Connector ODBC Myös useimmissa skriptikielissä tuki MySQL-tietokantojen käsittelylle

5 Relaatiorakenne Relaatioskeema R(A1, A2, …, An), jossa R on relaatio ja attribuutti Ai on kuvattavaan asiaan liitetty ominaisuus Relaatio ilmenee joukkona skeeman mukaisia attribuutti-arvo-ryhmiä Yleisimmin relaatio esitetään taulukkomuodossa, jossa attribuutit sarakkeina (columns) ja kohteet riveinä (tuples) Jokainen rivi tulee voida yksilöidä jonkin attrib. perusteella (avain) Tunnus Nimi Koko Väri 12345 Leila 35 Sininen 34343 Timo 43 23323 Tiina 29 Vihreä

6 SQL SQL (Structured Query Language) on kieli relaatiomuotoisen tiedon käsittelyyn sekä tietokannan rakenteen määrittelyyn Periaatteessa standardi, mutta useimmissa tietokantatuotteissa mukana epästandardeja valmistajakohtaisia laajennuksia SQL:n operaatiot voidaan jakaa mutating (tietosisältöä muuttavat, esim. insert, update, delete) ja non-mutating (sisältöä muuttamattomat, esim. select) operaatioihin

7 MySQL ja PHP Yleinen toteutusalusta dynaamisille websovelluksille
PHP sisältää suuren joukon MySQL-tietokantojen käsittelyyn tarkoitettuja funktioita MySQL-kantoja mahdollista käyttää myös tietokantaliittymän abstrahoivan dbx-moduulin kautta,

8 MySQL ja PHP Toimintaperiaate WWW-palvelin people.cc.jyu.fi
MySQL-palvelin elli.it.jyu.fi Selain 1. Pyytää dokumenttia, joka sisältää PHP-skriptiä 2. Suorittaa skriptin ja lähettää tietokantaoperaatiot tietokantapalvelimen suoritettavaksi 3. Suorittaa tietokantaoper. ja palauttaa tuloksen resurssitunnisteena 4. Purkaa resurssitunnisteen, muotoilee tuoloksen ja palauttaa HTML-dokumentin

9 Tietokantayhteyden muodost.
Ennen kannan käyttämistä, tietokantayhteys täytyy avata skriptissä: $db_a = mysql_connect(“palvelin”, “kayttunnus”, “salasana”); Onnistuessaan palauttaa linkkitunnisteen, jota voidaan käyttää tietokantayhteyteen viitattessa. Epäonnistuessaan palauttaa FALSE: $db_b = mysql_connect(“localhost”, “kayttunnus”, “salasana”) or die(mysql_error());

10 Tietokantayhteyden muodost.
Tyypillisesti samalla palvelimella on useita tietokantoja. Seuraavaksi valitaan käytettävä kanta: mysql_select_db(“omakanta”, $db_a) or die(mysql_error()); Tietokantayhteys suljetaan automaattisesti kun skriptin suorittaminen loppuu. Se voidaan sulkea myös erikseen käyttämällä: mysql_close($db_b);

11 Tietokantaoperaatioiden suorit.
mysql_query() lähettää SQL-lauseen tietokantapalvelimelle SELECT,SHOW,EXPLAIN ja DESCRIBE operaatioilla onnistunut kysely palauttaa resurssitunnisteen ja muun tyyppisillä kyselyillä TRUE Linkkitunnistetta voidaan käyttää ohjaamaan kysely haluttuun kantaan. Mikäli kysely suoritetaan ilman tunnistetta, käytetään viimeksi avattua tietokantayhteyttä

12 Tietokantaoperaatioiden suorit.
$query_a = “SELECT * FROM oma_taulu”; $result = mysql_query($query_a, $db_b) or die(mysql_error()); $query_b = “DELETE FROM oma_taulu WHERE nimi LIKE ‘T%’”; mysql_query($query_b, $db_a)

13 Tulosten käsitteleminen
mysql_result() palautaa yhden solun arvon: optionaalinen mysql_result($resurssitunn, rivinumero, attribnimi); mysql_fetch_row() poimii tulosjoukosta yhden rivin ja muodostaa siitä numeerisia tunnisteita käyttävän taulukon: $no_of_fields = mysql_num_fields($result); while($row = mysql_fetch_array($result)) { for($i=0; $i<=$no_of_fields; $i++) { echo “$row[$i]<br />”; } }

14 Tulosten käsitteleminen
mysql_fetch_array() poimii tulosjoukosta yhden rivin ja muodostaa taulukon, jossa sekä numeeriset että attribuuttien nimien mukaan nimetyt tunnisteet: while($row = mysql_fetch_array($result)) { echo “$row[Nimi], $row[Väri]<br />”; }

15 Esimerkkejä SQL-kyselyistä
SELECT etunimi, sukunimi FROM users WHERE kaupunki LIKE ‘Jyväskylä’ OR postinro = 40500; INSERT INTO users (etunimi, sukunimi, kaupunki, postinro) VALUES (‘Kauko’, ‘Putki’, ‘Jyväskylä’, 40500); UPDATE users SET status = ‘active’ WHERE id = ‘11’; INSERT ei salli WHERE:n käyttöä, joten se lisää aina uuden rivin. UPDATEa voidaan käyttää yksittäisten arvojen lisäämiseen, jolloin puuttuvat korvataan NULLilla. DELETE FROM users WHERE status = ‘inactive’;

16 Esimerkkejä SQL-kyselyistä
ORDER ja LIMIT SELECT * FROM products ORDER BY product_name ASC LIMIT 20; Valitaan 20 ensimmäistä riviä products taulusta, järjestetään product_namen perusteella nousevaan järjestykseen SELECT * FROM products LIMIT 50, 60; Valitaan rivit GROUP SELECT COUNT(*) FROM users GROUP BY status; Lasketaan rivien lukum. users taulussa, ryhmitellään statuksen mukaan

17 Esimerkkejä SQL-kyselyistä
Useamman taulun käyttely SELECT u.firstname, u.lastname, o.order_id FROM orders AS o, users AS u WHERE o.user_id = u.id AND u.id = 11; Muuttujien käyttö SELECT COUNT(*) FROM users WHERE login = ‘$login’ AND password = ‘$password’; SELECT * FROM products WHERE $field = ‘$keyword’;

18 Käyttäjän syötteen tarkistaminen
Käyttäjältä tulevan syötteen päästäminen sellaisenaan tietokantakyselyihin on melkoinen riski. Helppo tapa suodattaa ei-toivotut merkit pois on addslashes()funktio, joka lisää \ -merkin ‘, ‘’, \ ja NULin eteen. Lisätyt escape-merkit voidaan jälleen poistaa käyttämällä stripslashes() funktiota $string = addslashes($string); $string = stripslashes($string);

19 Käyttäjän syötteen tarkistaminen
HTML-tagit voidaan poistaa strip_tags() funktiolla. Lisäparametrina voidaan haluttaessa erikseen määritellä sallitut tagit $string = strip_tags($string, ‘<a><b><i>’); Vaadittujen muuttujien tarkistaminen if(!$firstname || !$lastname) exit(“Täytä vaaditut kentät.”); Muuttujan tyypin tarkistaminen if(gettype($age) != “interger”) exit(“Iän pitää olla kokonaisluku.”);

20 Joitain muita hyödyllisiä funktioita…
mysql_affected_rows() palauttaa rivimäärän joihin edellinen INSERT, UPDATE tai DELETE kysely vaikutti mysql_num_rows() palauttaa rivien määrän SELECT kyselyn palauttamassa tulosjoukossa mysql_insert_id() palauttaa viimeisen INSERT kyselyn tuottaman avaimen arvon Täydellinen lista MySQL dokumentaatio

21 MySQL-tietotyypit VARCHAR TINYINT TEXT DATE SMALLINT MEDIUMINT INT
BIGINT FLOAT DOUBLE DECIMAL DATETIME TIMESTAMP TIME YEAR CHAR TINYBLOB TINYTEXT BLOB MEDIUMBLOB LONGTEXT ENUM SET


Lataa ppt "PHP ja MySQL Verkkotekniikan jatkokurssi Kevät 2003"

Samankaltaiset esitykset


Iklan oleh Google