PHP ja tietokanta

Takaisin pääsivulle


Seuraavassa esimerkissä luodaan yksinkertainen PostgreSQL-tietokanta ja esitellään sen käyttöä PHP:llä.

Esimerkissä oletetaan, että komennot suoritetaan palvelimella users.cs.helsinki.fi, jossa on tehty jo tarvittavat alkuvalmistelut PHP:n ja PostgreSQL:n käyttöä varten.

Tietokannan luonti

Seuraava komento käynnistää PostgreSQL-komentotulkin:

$ psql

Luodaan taulu tuotteet ja lisätään siihen kolme riviä:

=> create table tuotteet (id serial primary key, nimi text, hinta integer);
=> insert into tuotteet (nimi, hinta) values ('kaali', 3);
=> insert into tuotteet (nimi, hinta) values ('porkkana', 2);
=> insert into tuotteet (nimi, hinta) values ('peruna', 3);

Kenttä id saa automaattisesti kasvavan indeksinumeron (serial) ja toimii taulun avaimena (primary key). Kenttä nimi sisältää merkkijonon (text), ja kenttä hinta sisältää kokonaisluvun (integer).

Taulun sisältö on siis seuraava:

=> select * from tuotteet;
 id |   nimi   | hinta 
----+----------+-------
  1 | kaali    |     3
  2 | porkkana |     2
  3 | peruna   |     3
(3 rows)

Nyt on aika poistua PostgreSQL-komentotulkista:

=> \q

Tiedon haku PHP:llä

Seuraava PHP-skripti näyttää taulun tuotteet tiedot:

haku.php
<?php

// yhteyden muodostus tietokantaan
try {
    $yhteys = new PDO("pgsql:host=localhost;dbname=KÄYTTÄJÄTUNNUS",
                      "KÄYTTÄJÄTUNNUS", "SALASANA");
} catch (PDOException $e) {
    die("VIRHE: " . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// kyselyn suoritus     
$kysely = $yhteys->prepare("SELECT * FROM tuotteet");
$kysely->execute();

// haettujen rivien tulostus
echo "<table border>";
while ($rivi = $kysely->fetch()) {
    echo "<tr>";
    echo "<td>" . $rivi["nimi"] . "</td>";
    echo "<td>" . $rivi["hinta"] . "</td>";
    echo "</tr>";
}
echo "</table>";

?>

Testaa skriptiä! (haku.php)

Skriptissä merkinnän KÄYTTÄJÄTUNNUS kohdalle tulee oma TKTL:n käyttäjätunnus ja merkinnän SALASANA kohdalle tulee PostgreSQL-tietokannan salasana.

Tiedon lisäys PHP:llä

Seuraavan skriptin avulla tietokantaan voi lisätä tietoa:

lisays.html
<form action="lisays.php" method="post">
<p>Nimi: <br>
<input type="text" name="nimi"></p>
<p>Hinta: <br>
<input type="text" name="hinta"></p>
<input type="submit" value="Uusi tuote">
</form>
lisays.php
<?php

// yhteyden muodostus tietokantaan
try {
    $yhteys = new PDO("pgsql:host=localhost;dbname=KÄYTTÄJÄTUNNUS",
                      "KÄYTTÄJÄTUNNUS", "SALASANA");
} catch (PDOException $e) {
    die("VIRHE: " . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// kyselyn suoritus
$kysely = $yhteys->prepare("INSERT INTO tuotteet (nimi, hinta) VALUES (?, ?)");
$kysely->execute(array($_POST["nimi"], $_POST["hinta"]));

// lisätyn rivin id:n selvitys
$id = $yhteys->lastInsertId("tuotteet_id_seq");
echo "Uuden tuotteen id: $id";

?>

Testaa skriptiä! (lisays.html)


Takaisin pääsivulle