Php ja mysql
Download
1 / 21

PHP ja MySQL - PowerPoint PPT Presentation


  • 155 Views
  • Uploaded on

PHP ja MySQL. Verkkotekniikan jatkokurssi Kevät 2003 Ville Seppänen ([email protected]). MySQL - yleistä. Yleisimmin käytetty avoimen lähdekoodin relaatiotietokantapalvelin, www.mysql.com Neljä jakelumuotoa

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'PHP ja MySQL' - veata


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Php ja mysql l.jpg

PHP ja MySQL

Verkkotekniikan jatkokurssi

Kevät 2003

Ville Seppänen ([email protected])


Mysql yleist l.jpg
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 yleist3 l.jpg
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 yleist4 l.jpg
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 l.jpg
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 voidayksilöidä jonkin attrib.perusteella (avain)


Slide6 l.jpg
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 l.jpg
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 php8 l.jpg

1. Pyytää dokumenttia, jokasisältää PHP-skriptiä

2. Suorittaa skriptin ja lähettää tietokantaoperaatiot

tietokantapalvelimen suoritettavaksi

Selain

WWW-palvelin

people.cc.jyu.fi

MySQL-palvelin

elli.it.jyu.fi

4. Purkaa resurssitunnisteen, muotoileetuoloksen ja palauttaa HTML-dokumentin

3. Suorittaa tietokantaoper. ja palauttaatuloksen resurssitunnisteena

MySQL ja PHP

  • Toimintaperiaate


Tietokantayhteyden muodost l.jpg
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 muodost10 l.jpg
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 l.jpg
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 suorit12 l.jpg
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)

or die(mysql_error());


Tulosten k sitteleminen l.jpg
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 sitteleminen14 l.jpg
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 l.jpg
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 kyselyist16 l.jpg
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 kyselyist17 l.jpg
Esimerkkejä SQL-kyselyistä

  • Useamman taulun käyttely

    SELECT u.firstname, u.lastname, o.order_idFROM orders AS o, users AS uWHERE 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 l.jpg
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 NULineteen. 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 tarkistaminen19 l.jpg
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 tarkistaminenif(!$firstname || !$lastname) exit(“Täytä vaaditut kentät.”);

  • Muuttujan tyypin tarkistaminenif(gettype($age) != “interger”) exit(“Iän pitää olla kokonaisluku.”);


Joitain muita hy dyllisi funktioita l.jpg
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 dokumentaatiohttp://www.mysql.com/doc


Mysql tietotyypit l.jpg

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

MySQL-tietotyypit


ad