Com treballar amb PHP i PDO

PHP i PDO

L’ús de PDO és la millor forma de treballar amb les nostres bases de dades PHP, és a dir, fer consultes per recuperar dades, inserir dades, esborrar-les…

PDO significa exactament “PHP Data Objects”, com veurem més endavant, es fa ús de la programació orientada a objectes per a PHP. El requeriment que tenim és que necesitem una versió superior o igual a la 5.1, però com crec lògic nosaltres utilitzarem una versió 7.0 o superior.

Historicament PHP ha tingut tres llibreries per connectar-se a MySQL: Mysql, Mysqli i PDO. Afortunadament a la nova versió 7.0 desapareix el connector mysql, un canvi que ens farà millorar la qualitat del nostre codi, ja que fa més de 10 anys que existeix el connector PDO. Si voleu veure les modificacions de PHP de la versió 5.6 a 7.0 http://php.net/manual/en/migration70.php

Per què PDO?

Aquesta és una pregunta comuna i crec que de senzilla resposta: TOT. M’explico, a través d’PDO pots gestionar 12 tipus diferents de bases de dades (Oracle, MySQL, SQLite, etc …), pots utilitzar consultes preparades amb etiquetes (ja veurem el final de l’article) i pots usar “Prepared statements”. Però el més important és la SEGURETAT que guanyes fent servir aquest “mètode”, en usar aquestes sentències preparades, que no són molt diferents al que s’aconsegueix a través de MySQL, usant mysql_real_escape_string ();.

No obstant això, com se sol dir, no tot són flors i violes, el rendiment és un 2,5% inferior a l’aconseguit a través d’MySQL, una cosa realment insignificant, però provem de ser objectiu i tot ha de ser dit.

 

Connectar-se a la base de dades

Per això, el primer serà crear la base de dades MySQL al servidor, jo he creat una base de dades anomenada “tutorialPDO” i he creat una taula que es digui “Usuaris”  amb dues columnes, un “Id” de tipus Int, 10 de longitud, clau primària i auto-va incrementar; la segona columna “Nom”, un VARCHAR de longitud 10:
Insertarem dos registres, amb els noms de Juan i Jordi.

Ara passem al que de veritat és objecte d’aquest tutorial, programar amb PHP:
Anem a veure com es fa una connexió a una base de dades amb MySQL normal (pre-historia):

Això és molt senzill de recordar, però amb PDO es fa d’una altra manera, que potser sembli una mica més complicat al principi però al cap ia la fi igual d’intuïtiva i igual que ho fem amb JAVA i JDBC:

Encara que sembli estrany realment és molt senzill: hem creat amb el “new” una instància de classe PDO (el que ens permetrà utilitzar diverses alhora), definim el tipus de base de dades amb “mysql:”, el servidor “localhost” ( en aquest cas), el nom de la base de dades “dbname = tutorialPDO”, i després usant variables (es pot fer sense), l’usuari i la contrasenya del servidor de base de dades.

Com pot haver-hi errors i hem de controlar-mitjançant l’ús de try … catch (…) {} de la següent manera:

D’aquesta manera es connecta a la base de dades i en cas que no pugui treu l’error amb una excepció., també podem fer la funció OR DIE de la sintaxi habitual de PHP i MySQL.

 

Consultes

D’aquesta és la forma en la qual no tindrem interacció amb la base de dades, només s’executarà la query i els possibles valors de retorn seran CERT o FALS, per identificar l’estat de l’execució de la query:

 

Ara realitzarem una consulta sobre la base de dades per retornar el Id de l’usuari Juan.

Aquest codi és un compendi de la majoria de funcionalitats de PDO.

Tenim un Prepared Statment amb etiquetes, que millora la llegivilitat respecte als interrogants.

El procés de bindParam el podem fer a traves d’un array indicant les parelles clau valor amb etiquetes i variables. També el podem fer etiqueta per etiqueta o amb ?.

Bolquem tot el resultat de la consulta en una variable amb el fetchAll(). També podem recuperar fila a fila amb l’instrucció fetch()

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *