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()

Com crear un CRUD amb Laravel 5.3

CRUD Laravel 5.3

En aquest article t’explicarem com crear un CRUD de forma ràpida i elegant.

Utilitzarem l’ultima versió de Laravel per mostrar-te el potencials dels frameworks en PHP.

Crearem una taula a la base de dades sobre Alumnes dels que enmagatzemarem Nom, Cognom, Edat i correu electronic. Amb aquesta informació voldrem poder realitzar les funcions bàsiques sobre aquesta taula llegir, crear, actualitzar i eliminar, en definitiva, un CRUD (Create, Read, Update, Delete).

Instalar i preparar l’entorn de desenvolupament Laravel

La instal·lació del frameword és molt fàcil de realitzar gracies a composer. I tota la documentació necesaria la trovarem a la pàgina oficila de Laravel.

Necesitarem una base de dades per enamagatzar la informació, en aquest cas utilitzarem una base de dades MySql que s’anomenarà crudlaravel.

Avans de començar a treballar amb el projecte hem de configurar l’entorn de desenvolupament del projecte modificant el fitxer .env que trovarem a l’arrel del projecte. En aquest cas només modificarem aquestes linies per que les comandes d’artisan funcionin:

 

Com tota l’informació anirà enmagatzemada dins de la base de dades, configurarem l’arxiu config/database.php per indicar la base de dades que hem creat.

 

Crear el model per al CRUD

Dins del MVC, el model s’encarregarà de gestionar la persistencia de la base de dades i facilitarnos la tasca de programació amb POO.

Amb aquesta comanda creem la classe que ens gestionarà la persistencia a al base de dades, gracies al ORM Eloquen que utilitza el framework. Ens haurà creat el model app\Student.php i la migració database\migration\XXXXXX_create_table_students.php.

La migració tindrà dos mètodes creats up i down per crear i destruir la taula. Nosaltres afegirem les columnes que volem que tingui dins del blueprint que té preparat.

El model podem afegir el camp fillable per indicar quin son els camps que podem modificar desde l’exterior. Afegir aquesta linea dins de la classe Student:

 

Recordatori: Student serà una classe, llavors el nom serà en majuscula i singular. El nom de la taula de la base de dades serà en minuscula i plural (afegint una s al final)

 

Crear el Controlador

Com que estem crean un CRUD, podem utilitzar el paràmetre –resource perquè ens crei automaticament els metodes dins del controlador.

Recordem que estem treballant amb POO i el nom de la classe anirà amb majuscules i normalment en singular.

 

Definir rutes

Les rutes seran necesaries per vincular la ruta amb el mètode del controlador, podem utilitzar la formula abreujada propia de Laravel pels CRUDs o especificar nosaltres mateixos totes les funcions que volem tindreels que volem.

Dins del fitxer app/http/controller/NerdController.php que ens ha creat el pas anterior una d’aquestes dos opcions que fan el mateix:

 

 

Crear vistes

Com a minim necesitarem 4 vistes per tindre les funcionalitats del CRUD, en aquest punt repasarem la sintacsis de BLADE, que és el preprocesador de CSS propi de Laravel.