PHP podpira 3 vmesnike za delo s podatkovno zbirko:
Starejše verzije PHP podpirajo vmesnik mysql
, ki pa je bil leta 2012 opuščen. PHP verzije 5.0 in novejše uporabljajo za delo s podatkovnimi zbirkami vmesnika mysqli
in PDO
. Oba sta objektno orientirana, mysqli
pa ima tudi proceduralni vmesnik.PDO
omogoča delo z 12-timi različnimi podatkovni zbirkami, mysqli
pa le s podatkovno zbirko MySQL.
Vrednost | mysql | mysqli | PDO |
---|---|---|---|
Predstavljen | v2.0 | v5.0 | v5.1 |
Opuščen | v5.5 (l. 2012) | - | - |
Vključen v PHP | DA | DA | DA |
Konfiguriran za MySQL | DA | DA | ne |
Podpira ostale DB | ne | ne | DA |
Postopkovni vmesnik | DA | DA | ne |
Objektno orentiran vmesnik | ne | DA | DA |
Pripravljene izjave | ne | DA | DA |
Uporaba podatkovne zbirke v PHP
V PHP interakcijo s podatkovno zbirko izvedemo v 5-ih korakih:
- Kreiranje povezave do podatkovne zbirke
- Izvajanje poizvedb v podatkovni zbirki
- Uporaba pridobljenih podatkov iz podatkovne zbirke (če ti obstajajo)
- Izpis podatkov
- Zapiranje povezave do podatkovne zbirke
Koraka 1 in 5 izvedemo samo enkrat, korake od 2 do 4 pa lahko izvedemo večkrat.
1. Kreiranje povezave do podatkovne zbirke in zapiranje povezave
Za delo s podatkovno zbirko v PHP moramo najprej vzpostaviti povezavo do podatkovne zbirke. Kreirati moramo povezovalni stavek, v katerem navedemo ime strežnika, uporabniško ime in geslo. Lahko navedemo tudi ime podatkovne zbirke.
Iz varnostnih razlogov se izogibamo neposrednemu navajanju podatkov v povezovalnem stavku. Podatke vstavimo v spremenljivke, v povezovalni stavek pa navedemo imena spremenljivk:
<?php
// 1. Kreiranje povezave do podatkovne zbirke
$dbhost = "localhost";
$dbuser = "uporabnik";
$dbpass = "skritoGeslo";
$dbname = "podatkovnaZbirka";
//Kreiranje povezave
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
//Preverjanje povezave
if(mysqli_connect_errno()) {
die("Povezava s podatkovno zbirko ni vzpostavljena: " .
mysqli_connect_error() .
" (" . mysqli_connect_errno() . ")"
);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Nepoimenovana</title>
<head>
<body>
</body>
</html>
<?php
//5. Zapiranje povezave do podatkovne zbirke
mysqli_close($connection);
?>
Še boljša praksa je, da povezovalne podatke vstavimo v konstante, v povezovalni stavek pa zapišemo imena konstant:
<?php
// 1. Kreiranje povezave do podatkovne zbirke
define("DB_SERVER","localhost");
define("DB_USER", "uporabnik");
define("DB_PASS", "skritoGeslo");
define("DB_NAME", "podatkovnaZbirka");
//Kreiranje povezave
$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
//Preverjanje povezave
if(mysqli_connect_errno()) {
die("Povezava s podatkovno zbirko ni vzpostavljena: " .
mysqli_connect_error() .
" (" . mysqli_connect_errno() . ")"
);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Nepoimenovana</title>
<head>
<body>
</body>
</html>
<?php
//5. Zapiranje povezave do podatkovne zbirke
mysqli_close($connection);
?>
Primerjava postopkovnih in objektno orientiranih ukazov
Primerjava proceduralnih in objektno orientiranih ukazov za delo s podatkovno zbirko:
Opis funkcije | Postopkovno | Objektno |
---|---|---|
Povezava do DB | mysqli_connect |
$mysqli = new mysqli |
Številka napake pri povezavi z DB | mysqli_connect_errno |
$mysqli->connect_errno |
Napaka pri povezavi z DB | mysqli_connect_error |
$mysqli->connect_error |
Izključi posebne znake v nizu SQL izjave | mysqli_real_escape_string |
$mysqli->real_escape_string |
Poizvedbe | mysqli_query |
$mysqli->query |
Vrne asociativno polje | mysqli_fetch_assoc |
$mysqli->fetch_assoc |
Zapre povezavo | mysqli_close |
$mysqli->close |