Načrtovanje in razvoj spletnih aplikacij

Povezava do podatkovne zbirke

PHP omogoča več načinov za delo s podatkovnimi bazami MySQL oziroma MariaDB. Danes pri delu z bazo praviloma uporabljamo dva sodobna vmesnika: mysqli in PDO.

Stari vmesnik mysql je bil opuščen v PHP 5.5 in odstranjen v PHP 7.0, zato ga v sodobnem PHP ne uporabljamo več.

Lastnost mysql mysqli PDO
Ali je primeren za sodoben PHP? Ne Da Da
Podpira MySQL / MariaDB Da Da Da
Podpira tudi druge podatkovne baze Ne Ne Da
Postopkovni vmesnik Da Da Ne
Objektno usmerjeni vmesnik Ne Da Da
Pripravljene izjave Ne Da Da

Pri sodobnem programiranju v PHP uporabljamo mysqli ali PDO. Vmesnik mysql je zastarel in ga ne uporabljamo več.

Uporaba podatkovne baze v PHP

Pri delu s podatkovno bazo v PHP običajno sledimo naslednjim korakom:

  1. vzpostavimo povezavo do podatkovne baze,
  2. izvedemo poizvedbo,
  3. preberemo rezultat,
  4. po potrebi podatke izpišemo ali obdelamo,
  5. na koncu povezavo zapremo.

1. Vzpostavitev povezave z mysqli

Za delo s podatkovno bazo potrebujemo ime strežnika, uporabniško ime, geslo in ime podatkovne baze.

<?php
$dbhost = "localhost";
$dbuser = "uporabnik";
$dbpass = "skritoGeslo";
$dbname = "podatkovnaZbirka";

$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

if (!$connection) {
    die("Povezava s podatkovno zbirko ni vzpostavljena.");
}
?>

Po koncu dela povezavo zapremo:

<?php
mysqli_close($connection);
?>

2. Uporaba konstant za povezavo

Še bolj pregledno je, da podatke za povezavo zapišemo v konstante:

<?php
define("DB_SERVER", "localhost");
define("DB_USER", "uporabnik");
define("DB_PASS", "skritoGeslo");
define("DB_NAME", "podatkovnaZbirka");

$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);

if (!$connection) {
    die("Povezava s podatkovno zbirko ni vzpostavljena.");
}
?>

3. Primer poizvedbe z mysqli

Po uspešni povezavi lahko izvedemo poizvedbo in preberemo rezultate:

<?php
$sql = "SELECT ime, priimek FROM dijaki";
$result = mysqli_query($connection, $sql);

while ($vrstica = mysqli_fetch_assoc($result)) {
    echo $vrstica['ime'] . " " . $vrstica['priimek'] . "<br>";
}
?>

4. Primer povezave s PDO

PDO je primeren, kadar želimo enoten način dela z različnimi podatkovnimi bazami:

<?php
$pdo = new PDO(
    "mysql:host=localhost;dbname=podatkovnaZbirka;charset=utf8mb4",
    "uporabnik",
    "skritoGeslo"
);
?>

Tudi pri PDO je priporočljivo uporabljati pripravljene izjave.

Primerjava postopkovnega in objektnega načina pri mysqli

Opis funkcije Postopkovno Objektno
Povezava do baze mysqli_connect new mysqli
Številka napake pri povezavi mysqli_connect_errno $mysqli->connect_errno
Opis napake pri povezavi mysqli_connect_error $mysqli->connect_error
Poizvedba mysqli_query $mysqli->query
Vračanje asociativnega polja mysqli_fetch_assoc $result->fetch_assoc()
Zapiranje povezave mysqli_close $mysqli->close()

mysqli je primeren, kadar delamo samo z MySQL ali MariaDB. PDO pa je dobra izbira, kadar želimo enoten način dela z več vrstami podatkovnih baz.