Tutorials
Pear Tutorial, Deel 1: PEAR::DB
PEAR is een package systeem voor php. In het kort betekent dit dat het classes zijn die centraal beheerd worden, met uiteenlopende functionaliteit: van UBB parsers tot debug classes.
Pagina 1
Introductie: Pear::DB
In dit deel zal ik het DB Package uit PEAR behandelen.
De class DB wordt standaard met php verscheept, en is bij vrijwel elke fatsoenlijke installatie geinstalleerd. Is dit niet het geval? Vraag je provider het te installeren, of je kan hem eventueel zelfs in je homedir installeren. Voor meer info: http://pear.php.net/manual/en/installation.php
Wat doet de class DB eigenlijk, en wat zijn de voordelen?
In de eerste plaats kun je met precies dezelfde code verschillende databases ondersteunen. Normaal gesproken, via PHP maak je gebruik van de mysql_connect functies. Bij PEAR geef je eenmalig het type database op, en werkt dezelfde code voor elke database waarvoor DB ondersteuning biedt.
De volgende databases zijn momenteel ondersteund:
mysql -> MySQL
pgsql -> PostgreSQL
ibase -> InterBase
msql -> Mini SQL
mssql -> Microsoft SQL Server
oci8 -> Oracle 7/8/8i
odbc -> ODBC (Open Database Connectivity)
sybase -> SyBase
ifx -> Informix
fbsql -> FrontBase
De class DB wordt standaard met php verscheept, en is bij vrijwel elke fatsoenlijke installatie geinstalleerd. Is dit niet het geval? Vraag je provider het te installeren, of je kan hem eventueel zelfs in je homedir installeren. Voor meer info: http://pear.php.net/manual/en/installation.php
Wat doet de class DB eigenlijk, en wat zijn de voordelen?
In de eerste plaats kun je met precies dezelfde code verschillende databases ondersteunen. Normaal gesproken, via PHP maak je gebruik van de mysql_connect functies. Bij PEAR geef je eenmalig het type database op, en werkt dezelfde code voor elke database waarvoor DB ondersteuning biedt.
De volgende databases zijn momenteel ondersteund:
mysql -> MySQL
pgsql -> PostgreSQL
ibase -> InterBase
msql -> Mini SQL
mssql -> Microsoft SQL Server
oci8 -> Oracle 7/8/8i
odbc -> ODBC (Open Database Connectivity)
sybase -> SyBase
ifx -> Informix
fbsql -> FrontBase
Pagina 2
Eerste voorbeeld
Dit script is een klein voorbeeld van het gebruik van DB, ter vergelijking van je gebruikelijke scripts.
<?php
require_once 'DB.php';
// Dit gedeelte ziet er waarschijnlijk bekend uit:
$user = 'gebruikersnaam';
$pass = 'wachtwoord';
$host = 'localhost';
$db_name = 'jouwdatabase';
// Dit kan dus ook bijvoorbeeld: pgsql, ibase, obci8 (oracle) zijn.
// Zie vorige pagina (lijst met databases)
$databeest = 'mysql';
// Data Source Name: Dit is een universele manier van verbinding maken
$dsn = "$databeest://$user:$pass@$host/$db_name";
$db = DB::connect($dsn);
// Checken of er wel een connectie is.
if (DB::isError($db)) {
die ($db->getMessage());
}
$res = $db->query("SELECT * FROM mijntabel");
// Het volgende voorbeeld werkt precies zoals je van mysql_fetchrow gewend bent.
while ($row = $res->fetchRow()) {
print "<td>$row[0]</td><td>$row[1]</td></td>";
}
// Verbinding verbreken.
$db->disconnect();
?>
<?php
require_once 'DB.php';
// Dit gedeelte ziet er waarschijnlijk bekend uit:
$user = 'gebruikersnaam';
$pass = 'wachtwoord';
$host = 'localhost';
$db_name = 'jouwdatabase';
// Dit kan dus ook bijvoorbeeld: pgsql, ibase, obci8 (oracle) zijn.
// Zie vorige pagina (lijst met databases)
$databeest = 'mysql';
// Data Source Name: Dit is een universele manier van verbinding maken
$dsn = "$databeest://$user:$pass@$host/$db_name";
$db = DB::connect($dsn);
// Checken of er wel een connectie is.
if (DB::isError($db)) {
die ($db->getMessage());
}
$res = $db->query("SELECT * FROM mijntabel");
// Het volgende voorbeeld werkt precies zoals je van mysql_fetchrow gewend bent.
while ($row = $res->fetchRow()) {
print "<td>$row[0]</td><td>$row[1]</td></td>";
}
// Verbinding verbreken.
$db->disconnect();
?>
Pagina 3
Dat kan sneller!
Dit alles kan ook gereduceerd worden tot een super-dooper 2 regelig script.
<?
require_once 'DB.php';
$db = DB::connect('mysql://gebruikersnaam:wachtwoord@localhost/database/');
$data = $db->getAll('SELECT * from tabel', DB_FETCHMODE_ASSOC);
//$data zal een array zijn met associative arrays van de columnamen:
//array(
//[0] => array (
// 'column1' => 'waarde',
// 'column2' => 'waarde'
//);
// Deze kan je doorlopen..
foreach ($data as $rij) {
print "<td>$rij['column1'] </td><td>$rij['column2']</td>";
}
Of je kan ook direct de inhoud van een cel benaderen:
$data[rijnummer]['columnaam'];
$db->disconnect();
?>
<?
require_once 'DB.php';
$db = DB::connect('mysql://gebruikersnaam:wachtwoord@localhost/database/');
$data = $db->getAll('SELECT * from tabel', DB_FETCHMODE_ASSOC);
//$data zal een array zijn met associative arrays van de columnamen:
//array(
//[0] => array (
// 'column1' => 'waarde',
// 'column2' => 'waarde'
//);
// Deze kan je doorlopen..
foreach ($data as $rij) {
print "<td>$rij['column1'] </td><td>$rij['column2']</td>";
}
Of je kan ook direct de inhoud van een cel benaderen:
$data[rijnummer]['columnaam'];
$db->disconnect();
?>
Pagina 4
Conclusie
Met DB kan je zonder al te veel moeite je php script geschikt maken voor andere databases dan mysql. Daarnaast biedt DB de functionaliteit om in een handomdraai hele tabellen binnen te halen.
Dit was slechts een kleine demonstratie van DB, er zijn een hoop meer functies, en mogelijkheden.
Nog even de linkjes om af te sluiten:
Pear: http://pear.php.net
Handleiding PEAR http://pear.php.net/manual/en/
Handleiding DB http://pear.php.net/manual/en/package.database.php
Dit was slechts een kleine demonstratie van DB, er zijn een hoop meer functies, en mogelijkheden.
Nog even de linkjes om af te sluiten:
Pear: http://pear.php.net
Handleiding PEAR http://pear.php.net/manual/en/
Handleiding DB http://pear.php.net/manual/en/package.database.php
Reacties
0