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:
- vzpostavimo povezavo do podatkovne baze,
- izvedemo poizvedbo,
- preberemo rezultat,
- po potrebi podatke izpišemo ali obdelamo,
- 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.