Načrtovanje in razvoj spletnih aplikacij

Povezava do podatkovne zbirke

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:

  1. Kreiranje povezave do podatkovne zbirke
  2. Izvajanje poizvedb v podatkovni zbirki
  3. Uporaba pridobljenih podatkov iz podatkovne zbirke (če ti obstajajo)
  4. Izpis podatkov
  5. 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