25. 9. 2014

PHP - základná práca s DB

Pri väčšom množstve dát, alebo postupne tvorenom obsahu stránky má zmysel uvažovať nad čítaním a zápisom údajov do databázy. Tieto sa dajú rýchlo prehľadávať a triediť aj do väčších objemov ako súbory na disku.


Pre pripojenie z PHP do databázy možno použiť funkcie s predponou podľa typu databázy:
PostgreSQL - pg_connect
MSSQL - sqlsrv_connect
ORACLE - oci_connect

Príklad pripojenia do oracle databázy:

$connection = oci_pconnect(DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE, DB_CHARSET);

Miesto DB_DATABASE možno použiť connection string z TNS:
Ako DB_CHARSET nastavenie kódovej stránky pri stavbe databázy, napr AL32UTF8.
if ($connection !== FALSE)
  {
    $query ="select *";
    $query.=" from knihy";
    $statement=oci_parse($connection, $query);
Po úspešnom pripojení nastavíme SQL príkaz do reťazca. S týmto reťazcom zavoláme funkciu oci_parse. Ak sa vykoná úspešne, môžeme zavolať oci_execute. 

    if ($statement !== FALSE)
      {
        if (oci_execute($statement))
          {
Po spracovaní SQL príkazu databázou načítame výsledky do poľa po riadkoch príkazom oci_fetch_array, ktorý vráti pole obsahujúci riadok s jednotlivými bunkami podľa názvov vrátených stĺpcov. Týmito údajmi môžeme naplniť PHP premenné, ktoré neskôr použijeme.
 

            $i=1;
            while ($row=oci_fetch_array($statement,OCI_BOTH))
              {
                $FNazov[$i]=$row['NAZOV'];
                $FObal[$i] =$row['OBAL'];
                $i++;
              }
          }
        oci_free_statement($statement);
      }

    oci_close($connection);

} else {
echo "DB connection failed!<br />\n";
}


Po ukončení práce s databázou môžeme vygenerovať html kód stránky do ktorej vyplníme načítané údaje z DB. 

echo "<table>\n";
if ($i != 0 )
  {
     for ($x = 1; $x < $i; $x++) {
       echo "<tr><td>\n";
       echo '<img src="'.$FObal[$x].'">';
       echo "\n</td><td><h2>".$FNazov[$x]."</h2></td></tr>\n";
     }
  }
echo "</table>\n";


pozn
Bindované premenné sú rýchlejšie pri opakovaní príkazu v cykloch, kedy netreba zakaždým spúšťať parsovanie SQL príkazu.
Popri tom zvyšujú bezpečnosť, vložené premenné prakticky priamo zabraňujú SQL injection útoku.

Žiadne komentáre:

Zverejnenie komentára