Načrtovanje in razvoj spletnih aplikacij

Kreiranje podatkovne zbirke

Podatkovno zbirko v MySQL oziroma MariaDB ustvarimo s stavkom CREATE DATABASE. Za takšno opravilo moramo imeti na strežniku ustrezne pravice.

Kreiranje podatkovne zbirke

V produkcijski aplikaciji podatkovne zbirke običajno ne kreiramo ob vsakem obisku spletne strani, ampak v ločenem namestitvenem ali administrativnem koraku. Zato je smiselno poznati tako osnovni učni zgled kot tudi pristop, ki ga srečamo v resnični aplikaciji.

Osnovna sintaksa za kreiranje nove podatkovne zbirke je:

CREATE DATABASE dbIme;

Če želimo preprečiti napako, kadar baza že obstaja, uporabimo:

CREATE DATABASE IF NOT EXISTS dbIme;

Pri povezavi za kreiranje podatkovne zbirke navadno navedemo le ime strežnika, uporabniško ime in geslo. Imena baze pri povezavi še ne navedemo, ker podatkovna zbirka v tem koraku morda še ne obstaja.

Osnovni primer z mysqli

Spodnji zgled vzpostavi povezavo do strežnika in nato ustvari podatkovno zbirko, če ta še ne obstaja.

<?php
// Podatki za povezavo s strežnikom MySQL oziroma MariaDB
define('DB_SERVER', 'localhost');
define('DB_USER', 'uporabnik');
define('DB_PASS', 'skritoGeslo');

// Povezava do strežnika brez izbire baze
$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS);

// Preverjanje povezave
if (!$connection) {
    die(
        'Povezava s strežnikom ni vzpostavljena: ' .
        mysqli_connect_error() .
        ' (' . mysqli_connect_errno() . ')'
    );
}

// SQL stavek za kreiranje baze
$sql = "CREATE DATABASE IF NOT EXISTS dbIme";

// Izvedba ukaza in preverjanje rezultata
if (mysqli_query($connection, $sql)) {
    echo "Podatkovna zbirka je pripravljena.";
} else {
    echo "Napaka pri kreiranju podatkovne zbirke: " . mysqli_error($connection);
}

// Zapiranje povezave
mysqli_close($connection);
?>

Osnovni primer s PDO

Enako nalogo lahko izvedemo tudi z vmesnikom PDO. Pri tem pogosto vključimo tudi način poročanja napak z izjemami.

<?php
// Podatki za povezavo
$streznik = 'localhost';
$uporabnik = 'uporabnik';
$geslo = 'skritoGeslo';

try {
    // Povezava do strežnika brez izbire baze
    $pdo = new PDO("mysql:host=$streznik", $uporabnik, $geslo);

    // Vklop izjem pri napakah
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Kreiranje baze, če ta še ne obstaja
    $sql = "CREATE DATABASE IF NOT EXISTS dbIme";

    // Izvedba SQL ukaza
    $pdo->exec($sql);

    echo "Podatkovna zbirka je pripravljena.";
}
catch (PDOException $e) {
    echo "Napaka pri kreiranju podatkovne zbirke: " . $e->getMessage();
}
?>

Razlika med mysqli in PDO

  • mysqli je namenjen delu z MySQL oziroma MariaDB.
  • PDO podpira več različnih podatkovnih sistemov.
  • Pri PDO napake pogosto obravnavamo z izjemami try in catch.
  • Oba pristopa omogočata izvajanje SQL ukazov za kreiranje baze.

📘Aplikacija Knjige

V priloženi aplikaciji Knjige je korak 02_kreiranjeDB.php namenjen pojasnilu priprave podatkovne zbirke. Ker gre za PDO aplikacijo, je ta zgled še posebej primeren za primerjavo z zgornjima primeroma.

Stran poudari, da se baza praviloma pripravi v ločenem namestitvenem skriptu, ne ob vsakem odpiranju strani.

Primer: aplikacija Knjige – 02_kreiranjeDB.php

Navodila za izdelavo aplikacije Knjige

  1. Najprej vzpostavimo povezavo do strežnika MySQL oziroma MariaDB.
  2. Pripravimo stavek CREATE DATABASE IF NOT EXISTS.
  3. Ukaz izvedemo in preverimo rezultat.
  4. Pri PDO napake navadno obravnavamo z izjemami.
  5. V resnični aplikaciji takšno opravilo pogosto prestavimo v ločen namestitveni korak.

Pri učenju je smiselno poznati oba pristopa:

  • mysqli kot klasičen pristop za MySQL oziroma MariaDB,
  • PDO kot bolj prenosljiv pristop,
  • aplikacijski pristop, kjer je priprava baze ločen korak.