AMVA50,php ja mysql

5.1 Tietokantakyselyn vaiheet

5.2 Tietokantayhteyden avaaminen ja sulkeminen

5.3 SQL-kyselyn suorittaminen ja tulosjoukon käsittely

5. PHP ja MySQL

Tä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 vaiheet

Web-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.

Kolmikerrosmalli

PHP-ohjelma toimii Web-palvelimella. Kun PHP-scriptin avulla halutaan tehdä tietokantakysely ja lähettää lopputulos selaimelle esitettäväksi, tarvitaan seuraavat vaiheet:

  1. Web-selain lähettää pyynnön Web-palvelimelle.
  2. Käynnistetään PHP-scripti.
  3. Avataan tietokantayhteys.
  4. Suoritetaan SQL-kysely tietokantaan.
  5. Otetaan kyselyn tulosjoukosta yksi rivi kerrallaan käsiteltäväksi.
  6. Tulostetaan haluttujen kenttien arvot selaimelle.
  7. Suljetaan tietokantayhteys.

sivun alkuun

5.2 Tietokantayhteyden avaaminen ja sulkeminen

Tietokantayhteys 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";

$yhteysnro=mysql_connect($palvelin,$user,$passwd) or die("Tietokantaan ei saatu yhteyttä, " .mysql_error()); mysql_select_db($tietokanta, $yhteysnro); ?>

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

sivun alkuun

5.3 SQL-kyselyn suorittaminen ja tulosjoukon käsittely

SQL-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];
}

sivun alkuun