Si em dieu que estàs desenvolupant una aplicació web usant PHP i no em dones més dades, tancant els ulls diria que estàs usant una base de dades MySQL i, segur que en el 80% dels casos encertaria.
És un fet: PHP i MySQL són un duet molt comú en aquest món.
El que no està tan definit és quina és la millor manera de connectar-se a MySQL fent servir PHP. A priori en destaquen dues:MySQLi, PDO
Tots dos poden utilitzar-se per armar CRUDs, reportis i qualsevol altra necessitat que impliqui comunicar una aplicació PHP amb una base de dades MySQL.
Aleshores… com triar?
Per fer-te (una cosa) més fàcil la tasca et comentaré breument de què es tracta cadascú.
En els dos blocs de codi PHP que has compartit, estàs treballant amb dues maneres diferents d'interactuar amb una base de dades: una utilitza PDO (PHP Data Objects) i l'altra utilitza l'extensió mysqli de PHP. Tot i que els dos enfoquen el mateix objectiu (recuperar i mostrar dades de la base de dades), hi ha algunes diferències importants entre les dues. A continuació, detallo les diferències i característiques de cada enfocament.
$dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { $pdo = new PDO($dsn, $user, $pass, $options); $stmt = $pdo->prepare("SELECT posts.id, posts.title, posts.img, posts.url FROM posts INNER JOIN post_etiquetas ON posts.id = post_etiquetas.post_id WHERE posts.category_id = 23 AND post_etiquetas.etiqueta_id = 131 LIMIT 12"); $stmt->execute(); $pagines = $stmt->fetchAll(); } catch (\PDOException $e) { echo 'Error de connexió: ' . $e->getMessage(); $pagines = []; }
Característiques de PDO:
Codi SQL (PDO):
SELECT posts.id, posts.title, posts.img, posts.url FROM posts INNER JOIN post_etiquetas ON posts.id = post_etiquetas.post_id WHERE posts.category_id = 23 AND post_etiquetas.etiqueta_id = 131 LIMIT 12
Copia$conn = new mysqli($host, $user, $pass, $db); $conn->set_charset("utf8"); if ($conn->connect_error) { die("Connexió fallida: " . $conn->connect_error); } $sql = "SELECT p.* FROM posts p JOIN post_etiquetas pe1 ON p.id = pe1.post_id AND pe1.etiqueta_id = 135 JOIN post_etiquetas pe2 ON p.id = pe2.post_id AND pe2.etiqueta_id = 62 WHERE p.category_id = 23"; $result = $conn->query($sql);
Característiques de mysqli:
Codi SQL (mysqli):
SELECT p.* FROM posts p JOIN post_etiquetas pe1 ON p.id = pe1.post_id AND pe1.etiqueta_id = 135 JOIN post_etiquetas pe2 ON p.id = pe2.post_id AND pe2.etiqueta_id = 62 WHERE p.category_id = 23
En resum:
Ambdós enfocaments són vàlids, però la teva elecció dependrà de les necessitats específiques del projecte i de la teva preferència personal per a l'estil de codi.