AMVA50,php ja mysql |
1. Yleistä | 2. Web toimintaympäristönä | 3. Yleistä tietokannoista | 4. SQL-kielen perusteet | 5. PHP ja MySQL |
6. Esimerkkisovellus | 7. Käyttäjien hallinta | 8. SQL-lauseiden turvallisuus | 9. Oppimistehtävät |
5. PHP ja MySQLTässä luvussa käsitellään lyhyesti periaatteet, joiden avulla MySQL-tietokannan tietoja voidaan ylläpitää PHP-kielisellä ohjelmalla. Tarkemmin tietokannan ylläpitotoiminnot käydään läpi seuraavan luvun esimerkkisovelluksessa.
5.1 Tietokantakyselyn vaiheetWeb-toimintaympäristönä-luvussa käytiin läpi asiakas-palvelin-malli. Toteutettaessa Web-ympäistössä toimivia tietokantasovelluksia, tätä mallia tulee täydentää ns. kolmikerrosmalliksi.
PHP-ohjelma toimii Web-palvelimella. Kun PHP-scriptin avulla halutaan tehdä tietokantakysely ja lähettää lopputulos selaimelle esitettäväksi, tarvitaan seuraavat vaiheet:
5.2 Tietokantayhteyden avaaminen ja sulkeminenTietokantayhteys avataan ja suljetaan mysql_connect()-funktiolla. Funktio tarvitsemat asetukset annetaan sille parametrina, jotka kannattaa sijoittaa muuttujiin, jota niitä on helppo muuttaa. Yhteyden muodostamisen jälkeen valitaan käytettävä tietokanta mysql_select_db()-funktiolla. Esimerkki. Tietokantayhteyden muodostaminen. <?php //Asetukset tietokantayhteyttä varten $palvelin="localhost"; $tietokanta="testi"; $user="tunnus"; $passwd="salasana"; Tietokantayhteys suljetaan mysql_close()-funktiolla. Tietokantayhteys suljetaan automaattisesti, kun sivulla oleva koodi on käsitelty, mutta se on hyvä silti sulkea ohjelmallisesti. Esimerkki. Tietokantayhteyden sulkeminen. <?php mysql_close($yhteysnro); ?> 5.3 SQL-kyselyn suorittaminen ja tulosjoukon käsittelySQL-kysely lähetetään tietokantaan mysql_query()-funktiolla. Funktio palauttaa kyselyn tuloksena saavan tulosjoukon eli tietueet muuttujaan. Esimerkki. Haetaan tietokannasta henkilo-taulusta kaikki sukunimet ja etunimet. $sql_lause="SELECT sukunimi, etunimi FROM henkilo"; $tulos=mysql_query($sql_lause); Tulosjoukkoa luetaan rivi eli tietue kerrallaan mysql_fetch_array()-funktiolla. Funktio palauttaa tietueen kentät taulukossa, jossa tietueen 1. kentän arvo on indeksissä [0], 2. kentän arvo indeksissä[1], jne. Esimerkki. Tulostetaan selaimelle tulosjoukon ensimmäinen sukunimi ja etunimi pilkulla erotettuna. $rivi=mysql_fetch_array($tulos); echo $rivi[0]. ", ".$rivi[1]; Kun tietueita ei ole enää tulosjoukossa, funktio palauttaa arvon false. Tätä hyödyntäen tulosjoukon rivit voidaan käydä läpi while-silmukalla. Tietueet voidaan käydä läpi myös for-silmukalla. For-silmukkaa varten saadaan tietueiden lukumäärä selville mysql_num_rows()-funktiolla. Esimerkki. Tulostetaan selaimelle kaikki sukunimet ja etunimet pilkulla erotettuna. while($rivi=mysql_fetch_array($tulos)) { echo $rivi[0]. ", ".$rivi[1]; }
|