[TYPO3-UG Dutch] database selectie

Jigal van Hemert jigal.van.hemert at eurorscg.nl
Tue Jul 18 08:09:35 CEST 2006


> From: Sacha Ligthert
> Patrick Broens wrote:
> > <snip>Hoewel deze een mooie object presenteert om daarmee 
> je query te 
> > formuleren, geeft dit nog steeds een MySQL resource terug 
> I.P.V. een 
> > Array of een Object.</snip>
> >
> > Hoezo?
> >
> > $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)
> >
> > geeft een array terug, nl. $row
> Maar je je blijft een MySQL resource door een functie heen 
> pushen om maar 1 regel per keer van een selectie eruit te krijgen.

In PHP5 is er een nieuwe interface voor databases bijgekomen: PDO (PHP
Data Objects). Voor m'n werk heb ik hier een PHP4.x versie van gemaakt,
zodat we over een tijdje de scripts zonder veel problemen kunnen
overzetten (alleen constantes in de vorm van PDO::CONSTANTE_NAAM heb ik
in de vorm PDO__CONSTANTE_NAAM moeten gieten).

Met PDO heb je vaak nog steeds twee stappen nodig, maar een resource
doorgeven is niet nodig.
$pdostatement = $PDO->prepare($sql);
$rows = $pdostatement->fetchAll();
Of
$row = $pdostatement->fetch();

> Je wilt eigenlijk een query opgeven en een Array of een 
> Object ervoor terug krijgen, bijv:
> $multi_dim_array = $GLOBALS['TYPO3_DB']->SQL($query);

'k Heb ooit al een MySQL class gemaakt die ongeveer zo werkte:
$dbobj->setquery($sql);
$row = $dbobj->getnextrow();

Overigens is het globale db object sowieso al handig omdat je een hoop
gedoe met connecties, etc. niet meer hoeft af te handelen. Daarbij
schijnt het (net als PDO overigens) ontworpen te zijn om ook met andere
databases dan MySQL om te kunnen gaan in principe. Helaas heb je
daarvoor ook standaard query's nodig en dat biedt het object nog net
niet...

Groetjes, Jigal.



More information about the TYPO3-UG-dutch mailing list