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