PHP ja MySQL Verkkotekniikan jatkokurssi Kevät 2003

Slides:



Advertisements
Samankaltaiset esitykset
Tietokannat: MySQL ja PostgreSQL. Yleistä • Relaatiotietokantaohjelmisto, jolla voidaan luoda, ylläpitää ja muuttaa ja hallinnoida tietokantoja • Avoin.
Advertisements

Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
JavaScript oliot © Reiska, DOM Oliot  JavaScript sisältää paljon valmiita DOM olioita, on sisältänyt jo DOM level 0 (ns. Legacy DOM) alkaen  WWW-ympäristössä.
JavaScript (c) Irja & Reino Aarinen, 2007
OULU ADVANCED RESEARCH ON SOFTWARE AND INFORMATION SYSTEMS Teppo Räisänen | Oulun yliopisto Facebook API Teppo Räisänen Tietojenkäsittelytieteiden.
Datan määrittely, MySQL
Relaatiomalli •Ted Codd 1970 •Matemaattinen perusta •Helppo toteuttaa •Helppo omaksua •Käytetyin tietomalli •Muodostaa perustan kurssin myöhemmille asioille.
Tietokanta.
Kökkötraktori-verkkokauppa
PHP ja sessionhallinta Verkkotekniikan jatkokurssi Kevät 2003 V. Seppänen
Julkaisukielet ja - tekniikat tMyn1 Julkaisukielet ja -tekniikat •Verkko-ohjelmointi voidaan jakaa kahteen osaan: asiakaspuolen ja palvelinpuolen ohjelmointiin.
Aggregaattifunktiot (1)
Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille
Käännösaikaiset virheilmoitukset • Tulee silloin, kun koodissa on jotain sellaista, joka ei ole Javan syntaksin mukaista • Esim. – Syntax error, insert.
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
VB:n tietokantakäsittely
Haaga-Helia Ammattikorkeakoulu
Relaatioalgebra (1) Kokoelma relaatioiden käsittelyyn tarkoitettuja operaatioita Operaatiot muuntavat relaatioita uusiksi relaatioiksi Muodostaa perustan.
Erilaiset liitokset FROM-osassa voidaan määritellä relaatio myös erilaisia liitosoperaatioita käyttäen Vasen, oikea ja täysi puoliliitos eli ulkoliitos.
Visual Basic -ohjelmointi
Monikon lisääminen (1) Luetellaan kaikki lisättävän rivin arvot INSERT INTO Asiakas VALUES (4, ’Assi’, ’Asiakas’); Luetellaan vain osa arvoista; muut arvot.
KRAKKEROINTI ja tietokannat.
Tietotyypit Tietotyyppi määrittää muuttujan sisältämän datan luonnetta, muistista tarvittavaa tilaa ja sitä, millaisia operaatioita siihen voidaan kohdistaa.
4-Tietokantaohjelmointi Teuhola Tietokantasovellusten ohjelmointi Taustaa 4.1. Relaatioskeemaa täydentäviä piirteitä 4.2. Sulautettu SQL, Java.
SQL Standardoitu kieli, jonka avulla voidaan
Ville Seppänen PHP osa 1 Verkkotekniikan jatkokurssi Kevät 2003 Ville Seppänen
Tietokannan luominen Tietokanta luodaan komennolla CREATE DATABASE
Muuttujat ja vakiottMyn1 Muuttujat ja vakiot PHP-kielen syntaksi on lainattu suurimmaksi osaksi C- kielestä. PHP on erityisesti HTML-dokumenttien sisään.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Näppäimistöltä lukeminen Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In -luokka.
XHTML-perusteita Teppo Räisänen
Tietokannat –kurssi SQL peruskyselyt
Tietokannat -kurssi KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola.
4.2-Sulautettu SQL Teuhola Sulautettu (embedded) SQL Ohjelmointikielen (ns. isäntäkielen) laajennus ISO-standardi, määritelty kielille Ada,
Aakkosnumeerinen tieto Tarkoittaa kaikkea muuta tietoa paitsi laskentaan tarkoitettuja lukuja Muuttujan tietosisältö on siis tekstitietoa Muuttujan tietotyypiksi.
DO NOT PRINT THIS DOCUMENT SQL -valintaehto CREATE TABLE opettaja ( opetunnus varchar(12) NOT NULL, nimi varchar(40) NOT NULL, puhelin varchar(12), tyohuone.
Yleistä Kotisivuja päivitetty Demoryhmät Luentomonisteen ensimmäiset osat Luentokalvot jaossa Demot alkavat maanantaina Selvitä oma demoryhmäsi Tutustu.
Tietokannat Tietotekniikan perusteet Pekka Orponen.
Java - Tietokanta. JDBC=Java database connectivity  ODBC:n kaltainen ohjelmointiliittymä SQL- tietokantoihin  Koostuu Java-kehitysympäristön (esim.
Karteesinen tulo Huomaa attribuuttien nimien tarkentaminen taulujen nimillä.
Ydinpalveluiden (käyttäjä, käyttöoikeus, potilas).NET-palvelutoteutus: CoreServiceDemo PlugIT-loppuseminaari Koulutustyöpaja 1: Avoimet ohjelmistorajapinnat.
APACHE Kurssi: V Linux Sami Karjalainen OH3 Mika Haaja OH5.
Tietokannat -kurssi KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola.
XSL Teppo Räisänen
XSL Teppo Räisänen
Tietokannat -kurssi KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola.
Tietokannan hallinta Kevät 2006 Jan Lindström R&G Chapter 1.
PHP ja MySQL PHP: Hypertext Preprosessor. PHP, johdanto Komentosarjakieli, joka on suunniteltu dynaamisen sisällön tuottamiseen verkossa PHP on sekä kieli,
MySQL & PostgreSQL Heikki Airaksinen & Janne Richter.
Tietokantapalvelimet Ville Parviainen. Sisältö Yleistä tietokannoista SQL PostgreSQL MySQL MySQL vs. PostgreSQL Linux -työ.
Hakemistot Nopeuttavat hakuoperaatioita Hidastavat päivitysoperaatioita Pääavaimelle luodaan aina indeksi; päävain toimii usein hakukriteerinä Luodaan.
Lähiverkot erikoistyökurssi TIETOKANTAPALVELIN Linux-harjoitustyö Mari Toukola
Tietokantapalvelimet -Mikko Pehkonen, Tite4. Tietokantapalvelimista  DBMS (Database Management Systems)  Tarkoitettu tiedon keskitettyyn hallintaan.
KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola
Copyright Oy Thomas Antila Consulting Ab 1 Indeksointi Oracle 8i tietokannassa OUGF Syksy 2000.
SQL ● Structured Query Language ● Standardoitu kieli tietokantakyselyiden tekemiseen – Standardoitu ei tarkoita etteikö olisi useampia versioita, joten.
Procedural Language Extensions to SQL
SPARQL.
Tietomallista tietokannaksi
Ohjelman keskeytys virhetilanteessa
Sisältö PostgreSQL MySQL Historia yms. ORDBMS Ominaisuuksia Asennus
7. Näytölle tulostaminen
Aakkosnumeerinen tieto
14. Hyvä ohjelmointitapa.
Aakkosnumeerinen tieto
11. Javan valintarakenteet
JavaScriptin perusteet
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
PHP Tietokantaohjelmointi 1
Esityksen transkriptio:

PHP ja MySQL Verkkotekniikan jatkokurssi Kevät 2003 Ville Seppänen (rissepp@cc.jyu.fi)

MySQL - yleistä Yleisimmin käytetty avoimen lähdekoodin relaatiotietokantapalvelin, www.mysql.com 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ä

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öä

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

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ä

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

MySQL ja PHP Yleinen toteutusalusta dynaamisille websovelluksille PHP sisältää suuren joukon MySQL-tietokantojen käsittelyyn tarkoitettuja funktioita http://www.php.net/manual/en/ref.mysql.php MySQL-kantoja mahdollista käyttää myös tietokantaliittymän abstrahoivan dbx-moduulin kautta, http://www.php.net/manual/en/ref.dbx.php

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

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());

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);

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ä

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)

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 />”; } }

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 />”; }

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’;

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 50 - 60 GROUP SELECT COUNT(*) FROM users GROUP BY status; Lasketaan rivien lukum. users taulussa, ryhmitellään statuksen mukaan

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’;

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);

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.”);

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 http://www.php.net/manual/en/red.mysql.php MySQL dokumentaatio http://www.mysql.com/doc

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 http://www.mysql.com/doc/en/Column_types.html