Skip navigation

A csatlakozás menete mysqli_ függvényekkel

Adatbáziskapcsolat létrehozása és lezárása

Az adatbáziskapcsolatot a mysqli_connect( hostname, felhasznalo, jelszo ) függvénnyel hozzuk létre. Amennyiben nem sikerült csatlakozni az adatbázishoz, úgy a die( hibaüzenet ) függvénnyel tudunk saját hibaüzenetet adni erről.  A mysqli_connect() függvény visszatérési értéke a kapcsolat azonosítója, amit egy változóban tárolunk.

A kapcsolatot a munka befejeztével mindig le kell zárni. Erre használjuk a mysqli_close( kapcsolat_azonosító ) függvényt, amelynek paramétere a mysqli_connect() által visszaadott kapcsolat azonosító.

PHP dokumentáció: mysqli_connect()

Karakterkódolás beállítása

Ez a lépés nem közelező, de ajánlott, mivel máskülönben az adatok "csúnyán" jelennek meg (bizonyos karakterek, pl. ékezetek, nem tudnak megfelfelően megjelenni az alapértelmezett kódolásban. Fontos, hogy mind a PHP fájl, mind az adatbázis karakterkódolása össze legyen hangolva, ahol szükséges, ott ezt állítsuk be.

A karakterkódolást az alábbi sorokkal lehet beállítani (itt UTF-8 karakterkódolást használunk).
mysqli_query($conn, 'SET NAMES UTF-8');
mysqli_query($conn, "SET character_set_results=utf8");
mysqli_set_charset($conn, 'utf8');

Adatbázis kiválasztása

Az adatbázis kiválasztása a mysqli_select_db( kapcsolat_azonosító, adatbázisnév ) függvénnyel történik. A függvény első paramétereként meg kell adni a mysqli_connect() által visszakapott kapcsolat azonosítót. Második paraméter az adatbázis neve lesz, amit használni szeretnénk. A függvény visszatérési értéke egy logikai érték, amely true (igaz), ha sikerült csatlakozni az adatbázishoz, ellenkező esetben pedig false (hamis).

PHP dokumentáció: mysqli_select_db()

SQL utasítások végrehajtása

Az SQL utasítások végrehajtása a mysqli_query( kapcsolat_azonosító, SQL_utasítás ) függvénnyel történik. Első paraméterként meg kell adnunk a kapcsolat azonosítót, majd megadjuk az SQL utasítást. A függvény visszatérési értéke az utasítástól függ.

Abban az esetben, ha az utasítás külső (például felhasználói felületről érkező) értéket tartalmaz, előkészített utasítást kell használni az SQL injekciók elkerülése érdekében. Az utasításokat a mysqli_prepare() függvénnyel lehet előkészíteni, és az SQL utasításon belül jelezni kell a külső értékek helyét. A külső értékeket a mysqli_stmt_bind_param() függvénnyel kell bekötni és végül az utasítást a mysqli_stmt_execute() utasítással kell lefuttatni.

PHP dokumentáció: mysqli_query(), mysqli_prepare(), mysqli_stmt_bind_param(), mysqli_stmt_execute()

Lekérdezés eredményeinek elérése

Ha a mysqli_query() függvényben egy SQL lekérdezést hajtottunk végre, akkor annak visszatérési értéke egy eredményhalmaz. Ezen halmaz elemeit a mysqli_fetch_assoc( eredményhalmaz ) függvénnyel érjük el. Amíg van olyan elem a halmazban, amelyet nem vizsgáltunk, úgy azt adja a vissza a függvény asszociatív tömb formájában, különben a visszatérési érték null lesz.

Megjegyezzük, hogy más módja is van az elemek elérésének. Az újabb PHP verziók a mysqli_stmt_fetch() függvény használatát támogatják.

pelda1.php

<?php
    echo '<h1>Első példa</h1>'; // főcím kiíratása
    // csatlakozás az adatbázishoz
    $conn = mysqli_connect('localhost', 'root','') or die("Hibás csatlakozás!");

    // a karakterek helyes megjelenítése miatt be kell állítani a karakterkódolást!
    mysqli_query($conn, 'SET NAMES UTF-8');
    mysqli_query($conn, "SET character_set_results=utf8");
    mysqli_set_charset($conn, 'utf8');
         
    if ( mysqli_select_db($conn, 'pelda') ) {    // ha sikeres az adatbázis kiválasztása    
        // lekérdezzük a városokat a "varosok" táblából
        
        $sql = "SELECT id, varosnev, megye FROM varosok"; // ez csak egy string, még nem hajtódik végre
        $res = mysqli_query($conn, $sql) or die ('Hibás utasítás!'); // végrehajtjuk az SQL utasítást
          
        // html táblázatként íratjuk ki;
        echo '<table border=1>';
        echo '<tr>';            // táblázat fejléce
        echo '<th>ID</th>';        
        echo '<th>Városnév</th>';
        echo '<th>Megye</th>';
        echo '</tr>';
        
        // a táblázat sorai
        while ( ($current_row = mysqli_fetch_assoc($res))!= null) {    // most asszociatív tömbként kezeljük a sorokat
            echo '<tr>';
            echo '<td>' . $current_row["id"] . '</td>';
            echo '<td>' . $current_row["varosnev"] . '</td>';
            echo '<td>' . $current_row["megye"] . '</td>';
            echo '</tr>';
        }
        echo '</table>';
        
        mysqli_free_result($res);    // felszabadítjuk a lefoglalt memóriát
    } else {                                    // nem sikerült csatlakozni az adatbázishoz
        die('Nem sikerült csatlakozni az adatbázishoz.');
    }
 
    mysqli_close($conn); // lezárjuk az adatbázis-kapcsolatot
 
?>

Megjegyzés

A fenti példában még csak alapvető utasításokat használunk és az "alkalmazás" felépítése is elmarad a gyakorlatban használt megoldásoktól. Ez egy egyszerű, könnyen átlátható minimális példa, amellyel ki tudjuk próbálni az adatbázis csatlakozást PHP-ben.   

Adatbázis export és forráskód

A pelda adatbázis létrehozását nem tartalmazza az SQL fájl, ezért azt létre kell hozni.

A program forráskódja tömörítve van, mivel webes felületen nem lenne másképp letölthető (megnyitná a böngésző).