Kirjautuminen

Haku

Tehtävät

Opasarkisto: PHP: Oraclen käyttö PHP:ssä

Kirjoittaja: raezel (2004).

⚠ Huomio! Tämä opas on vanhentunut. Oppaan sisältöön ei voi enää luottaa. Opas on säilytetty vain sen historiallisen arvon vuoksi. ⚠


Vaikka Oracle onkin varsin kallis ja ammattilaistason ohjelma, saattaa joskus tulla vastaan hetki, kun PHP tarvitsisi saada yhteistyöhön Oracle-tietokannan kanssa. Tässä siitä lyhyt opas. Tässä oppassa käsitellään yhteyden ottaminen tietokantaan, kyselyjen ajaminen, tietojen hakeminen tietokannasta ja niiden lisääminen tietokantaan. Tässä oppaassa on käsitelty vain tiedon hakeminen ja lisääminen, vaikka Oraclella voikin tehdä kymmeniä muitakin asioita. Näiden käyttö vaatii kuitenkin SQL-osaamista, ja sitä ei käsitellä tässä oppaassa.

Aluksi otetaan yhteys tietokantaan ja määritellään ympäristö.

    //määritetään ympäristö
    putenv("ORACLE_SID=TIETOKANTA");
    //asetetaan yhteysmuuttuja, jolla kerrotaan käyttäjätunnus, salasana ja tietokanta
    $yhteys = ocilogon("kayttaja", "salasana", "tietokanta");

Seuraavaksi ajetaan SQL-kysely tietokantaan, jossa verrataan tietokannan tietoa muuttujaan.

    //asetetaan kysely muuttujaan (huomaa Oraclen vaatimat hipsut muuttujan ympärillä!)
    $sql="SELECT kentta1, kentta2 FROM TAULU where kentta1 = '" . $muuttuja . "'";
    //muodostetaan lause
    $lause = OCIParse($yhteys,$sql);
    //ajetaan lause
    OCIExecute($lause);

Lauseen ajamisen jälkeen voidaan hakea tietoja tietokannasta äsken muodostetun kyselyn avulla.

    //haetaan tietoa niin kauan kun sitä on
    while(OCIFetchInto($lause, $arvo))
    {
        //haetaan tiedot muuttujiin (tietokannan kentän nimi kokonaan isolla!)
        $tieto = OCIResult($lause, "KENTTA1")
        $toinentieto = OCIResult($lause, "KENTTA2")
    }

Lopuksi vapautetaan lause ja suljetaan yhteys tietokantaan.

    //vapautetaan SQL-lause
    OCIFreeStatement($lause);
    //suljetaan yhteys
    OCILogoff($yhteys);

Tiedon lisääminen tietokantaan käy lähes samalla tavalla kuin tiedon hakeminenkin. Yhteys avataan ja lopetetaan samalla lailla kuin ylempänä, mutta kyselyä muutetaan hieman. Seuraavassa esimerkki.

    //ensimmäisissä suluissa mainitaan kentät, joihin tietoa lisätään, seuraavissa lisättävä tieto
    //(huomaa Oraclen vaatimat hipsut muuttujan ympärillä sekä pilkut!)
    $sql="INSERT INTO TAULU (kentta1, kentta2) VALUES('" . $tietoa . "','" . $lisaatietoa . "'";
    //muodostetaan lause
    $lause = OCIParse($yhteys,$sql);
    //ajetaan lause
    OCIExecute($lause);

Tämän pikaisen oppaan avulla pitäisi Oraclen peruskäyttö onnistua.

Juho Fröjd, 2.5.2004

Kommentit

paziman [05.05.2004 14:38:18]

#

ehkäpä tosta puuttuu vielä ocicommit($yhteys),ocirollback($yhteys), jotka on aika tärkeitä myös.

ocicommitilla vahvistetaan tapahtuma ja (tarvittaessa) rollbackillä perutaan tapahtuma.

raezel [06.05.2004 23:01:05]

#

No tuo ocilogoff vahvistaa kyllä tapahtuman, mutta tuo ocirollback lienee varsin käytänöllinen. En vain koskaan ole itse tarvinnut.

paziman [16.05.2004 18:13:38]

#

jep, mutta ehtä jos halutaa yhtenäinen tapahtuma jonka on pakko mennä hallitusti läpi? silloin if(!ocicommit){ocirollback();} on pop.

raezel [16.05.2004 23:00:59]

#

Totta puhut.. Erittäin hyvä huomio siis.

Kirjoita kommentti

Huomio! Kommentoi tässä ainoastaan tämän oppaan hyviä ja huonoja puolia. Älä kirjoita muita kysymyksiä tähän. Jos koodisi ei toimi tai tarvitset muuten vain apua ohjelmoinnissa, lähetä viesti keskusteluun.

Muista lukea kirjoitusohjeet.
Tietoa sivustosta