Un día com avui, al 1991, un jove estudiant de nom Linus Torvalds anunciava que treballava en un nou sistema operatiu.
Sense adonar-se'n posava les primeres pedres d'un dels més exitosos projectes de Software Lliure. Creava Linux, present avui día en l'Android del teu Smartphone, els serveis que fas servir a través d'Internet, els més poderosos súper ordinadors, l'Internet de les coses i molts àmbits més.
En qualsevol aplicació implementada en PHP que requereixi
d’ accés a una Base de Dades (BBDD d’ara endavant), podrem fer servir les transaccions amb MySQLi (amb
programació orientada a objectes o amb programació estructurada), o la clase PHP
Data Object (PDO) que proporciona una capa d’abstracció d’accés a les dades.
Els dos procediments estan implementats en les darreres versions de PHP (5.0 i superiors).
PDO y MySQLi ofereixen una API orientada a objectes, però MySQLi també ofereix una API de programació estructurada, per si no estàs familiaritzat amb POO
La connexió en les dues formes es bastant simple:
// Per PDO
$db = new PDO(«mysql:host=localhost;dbname=database», ‘username’, ‘password’);
// MySQLi, Programació estructurada
$mysqli= mysqli_connect(‘localhost’,’username’,’password’,’database’);
// MySQLi, POO
$mysqli = new mysqli(‘localhost’,’username’,’password’,’database’);
Els dos procediments estableixen métodes de seguretat davant atacs SQL, no obstant la funció prepare de la clase PDO proporciona uns mecanismes de seguretat adicionals que fan del seu ús una bona pràctica en seguretat i eficiència.
Si bé es cert que mitjançant MySQLi podríem fer servir la funció mysqli_real_scape_string per escapar valors, necesitaríem d’altres recursos per aconseguir una implementació tant eficient com amb el prepare de PDO.
La funcionalitat de parà metres linkats a noms es una implementació propia de la clase PDO, la qual no està disponible amb MySQLi.
Exemple:
// Preparem la sentència
$sql = $dbPdoCon ->prepare("SELECT id FROM usuaris
WHERE (num=:str_usuari)
AND password=:hash_pwd");
// Linkem els paràmetres
$sql->bindParam("str_usuari ", $usuari,PDO::PARAM_STR) ;
$sql->bindParam("hash_pwd ", $contrasenya,PDO::PARAM_STR) ;
// Executem:
$sql->execute();