2010-06-20 6 views
1

Possible en double:
PHP PDO vs normal mysql_connectAccéder à la base de données via la fonction par rapport à l'objet, différence?

donc dans ma demande, j'accédé à la base de données via une fonction nommée db_connect() ;. Tout simplement, il a alimenté les informations de connexion requises et a ouvert une connexion à la base de données via mysql_connect et mysql_select_db.

Maintenant que je travaille, j'ai trouvé que le programmeur principal utilise PDO. Fantaisie. Cependant, il ressemble plus ou moins à une version orientée objet de la même chose que j'avais l'habitude d'utiliser.

Alors, quelle est la différence entre le faire comme je le faisais, ou écrire une classe "db" avec un constructeur qui se connecte automatiquement à la base de données? Dans les deux cas, je dois me connecter à la base de données/créer un nouvel objet qui, dans les deux cas, occupe une ligne.

Est-ce une bibliothèque de fantaisie pour faire abstraction de la complexité des connexions à la base de données?

La seule chose que je peux penser est qu'il ya une destructor dans la version OO, ce qui signifie que je ne voudrais pas avoir à code dans un « db_close() » ...

moi Edu-ma-CATE ! (Please'm)

Répondre

4

Que votre bibliothèque de base de données soit fonctionnelle ou orientée objet n'est pas vraiment pertinente en soi, mais PDO est très moderne et possède un certain nombre d'avantages par rapport aux anciens mysql_connect() et consorts, le plus important des requêtes paramétrées qui rendent SQL injections impossibles.

En outre, PDO prend en charge a whole lot more database platforms. D'un point de vue architectural, l'approche POO a aussi du sens, c'est plus qu'une simple décoration: vous créez un objet PDO, qui est votre connexion à la base de données. Plusieurs objets = plusieurs connexions. Envelopper un ensemble de résultats dans un objet - fournir toutes les fonctions pour récupérer des lignes, sauter, revenir en arrière, etc .... est également très logique.

Si je devais choisir un emballage de base de données pour un nouveau projet, j'irais certainement avec PDO sur mysql_*().

+0

Merci pour vos commentaires, Pekka :) –

+0

+1 PDO est définitivement le chemin à parcourir. Il y a plus d'une courbe d'apprentissage sur mysql _ *() mais ça vaut le coup pour les requêtes paramétrées si rien d'autre. –

Questions connexes