Consultes preparades amb PDO
PDO permet preparar les consultes que llençarem contra la base de dades abans de ser executades i definir els paràmetres o variables que utilitzarem a la sentència, són les anomenades "bind variables".
Això ens permet escapar correctament les variables de forma segura i alhora llençar la mateixa consulta "precompilada" varies vegades modificant només els valor de les "bind variables" sense haver de construir la consulta de nou, i aconseguint una notable millora en el rendiment respecte a la situació en que construíssim una consulta nova cada cop.
Veiem-ne un exemple:
// Construïm i preparem la consulta $sql = 'SELECT * FROM regio WHERE habitants > :habitants AND tipus = :tipus'; $sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); // Recuperem els municipis de mes de 1.000 habitants $sth->execute(array(':habitants' => 1000, ':tipus' => 'municipi')); $municipis = $sth->fetchAll(); // Recuperem les comarques de mes de 100.000 habitants $sth->execute(array(':habitants' => 100000, ':tipus' => 'comarca')); $comarques = $sth->fetchAll(); // Recuperem les vegueries de mes de 500.000 habitants $sth->execute(array(':habitants' => 500000, ':tipus' => 'vegueria')); $vegueries = $sth->fetchAll();
Fixem-nos que només em definit un sol cop la consulta, la hem preparat, i tot seguit hem pogut anar recuperant varies vegades les dades modificant les variables que havíem definit sense haver de tornar a construir la consulta.