Search


print PDF
Mysql rajapinta



Esittely


PHP:llä voi ottaa yhteyden helposti moniin eri tietokantoihin. Jos kanta ei tue PHP:tä voidaan käyttää ODBC-ajuria.

Kannan kanssa kommunikoidaan SQL-pyyntöjen avulla.

Esimerkeissä käytettään MySQL:ää. Se on ilmainen, helppokäyttöinen ja suosittu tietokanta joka toimii sekä Linuxissa, että Windowsissa.



Muuttujien määrittely


Ensimmäiseksi on määriteltävä muuttujat joilla otetaan yhteys tietokantaan.



$user: käyttäjänimi

$passwd: salasana

$host: host(tietokone jolla tietokanta sijaitsee)

$bdd: tietokannan nimi




HUOM: Muuttujat eivät näy loppukäyttäjille, koska php-skripti ei lähde palvelimelta ulos.


Kirjautumistunnukset kannattaa tallentaa tiedostoon, josta ne luetaan tarvittaessa. Näin esimerkiksi mahdollinen salasanan vaihto käy helpommin.



Perustoiminnot


MySQL sisältää monia funktioita tietokantojen käyttöön liittyen. Tärkeimmät toiminnot ovat mysql_connect, mysql_select_db, mysql_query sekä mysql_close. Järjestyksessä, nämä ottavat yhteyden tietokantaa, valitsevat soluja, tekevät kyselyjä sekä sulkevat yhteyden.



Virheiden hallinta


Jotkut toiminnot palauttavat tiedon yhteyden tilasta. Näin skriptin voi lopettaa ennen kuin virheet kasautuvat. Tämä onnistuu kahdella metodilla:

- Tallenna funktion tulos muuttujaan. Esim:
$connect = mysql_connect($host,$user,$passwd);



- Die():n käytöllä virheen yhteydessä. Jos funtio palauttaa 0:ia, palauttaa die() virheviestin. Esim:

mysql_connect($host,$user,$passwd) or die("error connection on the server $host");




Tulosten prosessointi


Käytettäessä mysql_query-komentoa, on tärkeää tallettaa tulos muuttujaan. Tämä muuttuja sisältää kuitenkin raakadataa eikä siten ole käytettävissä suoraan. Tämän takia käytetään funktiota mysql_fetch_row(), joka jakaa tulokset esimerkiksi sarakkeen mukaan (nimi, osoite jne.).
Ajattele taulukkoa nimeltä "link", joka sisältää nimiä ja URL:eja verkkosivuille. Voit näyttää tulokset taulukossa:

<html>

<head>

<title>Links</title>

<head>

<body>



<table border="1" cellpadding="0" cellspacing="0">



<tr>

<th>Name of the site</th>

<th>URL</th>

</tr>



<?php

/* Yhteysasetukset */

$host = the-machine;

/* Yleensä "machine" on localhost */

$user = your-login;

$bdd = Database-name;

$passwd = Password;



/* Yhteys */

mysql_connect($host, $user,$passwd) or die("connection error on the server!");

mysql_select_db($bdd) or die("connection error on the database");



/* Pyyntö */

$query = "SELECT name,url FROM sites ORDER BY name";

$result = mysql_query($query);



/* Haku */

while($row = mysql_fetch_row($result)){

$Name = $row[0];

$Url = $row[1];

echo "<tr>



<td><a href="$Url">$Name</a></td>



<td>$Url</td>



</tr>

";

}



/* Yhteyden katkaisu */

mysql_close();

?>



</tr>

</table>

</body>

</html>



Annetussa esimerkissä pyynnöt palauttavat nimen ja URL:n. Funktio mysql_fetch_row() nanalysoi jokaisen rivin ja tallettaa ne sarakkeisiin "row[]".



Tyhjien tulosten havaitseminen

Saattaa olla hyödyllistä estää tuplien lisääminen taulukkoon. Komennolla SELECT + WHERE voi helposti tarkistaa onko taulukossa jo tietty alkio. mysql_fecth_row() :n "Null" tulkitaan negatiiviseksi vastaukseksi. Seuraavassa esimerkki:


<?php



/* Yhteysasetukset */

$host = the-machine;

/* Yleisesti localhost */



$user = <xxx>Your-Login</xxx>;

$bdd = <xxx>Database-Name</xxx>;

$passwd = <xxx>Your-Password</xxx>;



/* Yhteys */

mysql_connect($host, $user,$passwd) or die("connection error to the server");

mysql_select_db($bdd) or die("connection error to the database");



/* Pyyntö */

$query = "SELECT nom,url FROM sites ORDER BY nom";

$result = mysql_query($query);



Results recuperation

if (!mysql_fetch_row($result)) {

echo "Any records corresponding";

}

else {

while($row = mysql_fetch_row($result)){

$Name = $row[0];

$Url = $row[1];

echo "<tr>



<td><a href="$Url">$Name</a></td>



<td>$Url</td>



</tr>

";

}

}



Database deconnection

mysql_close();

?>