PHP PDO vs normale mysql_connect
Dois-je utiliser php PDO ou normal mysql_connect pour exécuter des requêtes de base de données en PHP?
Lequel est le plus rapide?
L'un des grands avantages de l'AOP est que l'interface est compatible sur plusieurs bases de données.
Il y a quelques fonctions cool pour les instructions préparées trop qui prendre les tracas d'échapper à toutes vos chaînes de requête. La portabilité de l'AOP est plus grand que mysql_connect.
Oui, dois-je utiliser PDO pour ces raisons, ou s'en tenir à la traditionnelle mysql_connect?
- Récemment, j'ai lu un bon article sur les AOP. J'espère que vous l'aimerez aussi. Lien:: net.tutsplus.com/tutorials/php/...
- presque 4 ans plus tard que la question initiale a été posté, maintenant, vous ne devez pas utiliser
mysql_*
fonctions comme elles sont déconseillées (voir encadré rouge en haut de lamysql_connect
. - Un autre bon article sur le désapprobation de
mysql_*
fonctions et aussi il décrit la façon d'aller sur la mise en œuvre de PDO si vous utilisez déjà d'eux.
Vous devez vous connecter pour publier un commentaire.
AOP est un peu plus lent que les mysql_*
Mais il a une grande portabilité. PDO fournit une interface unique à travers de multiples bases de données. Cela signifie que vous pouvez utiliser plusieurs DB sans utiliser mysql_query pour mysql, mssql_query pour MS sql etc. Suffit d'utiliser quelque chose comme $db->query("INSERT INTO...") toujours. N'importe quel pilote de base de données que vous utilisez.
Donc, pour les plus grands ou les portables du projet AOP est préférable. Même zend framework utiliser PDO.
LIMIT
clause dans MS SQL Server: stackoverflow.com/questions/603724/...)Rapide timings indiquer AOP est légèrement plus rapide lors de la connexion.
Donne des résultats comme
La différence de vitesse sera négligeable de toute façon; l'établissement d'une connexion réseau est susceptibles de prendre BEAUCOUP plus longtemps que tous les frais généraux encourus par PDO, surtout si le serveur mysql est sur un autre hôte.
Vous avez mentionné toutes les raisons d'utiliser PDO vous-même. Vraiment, jamais, jamais utiliser mysql_* fonctions directement, soit utiliser PDO, ou de l'utilisation certains d'autres bibliothèque.
$dsn
, ce qui est généralement ce que vous attendez pour le faire.Je ne pense pas que la vitesse est ce que les gens recherchent quand ils sont en utilisant PDO -- je ne sais pas si il y a une différence, et je honnestly ne se soucient pas : tant que je suis en train de faire un couple de requêtes à une base de données lors de la génération d'une page, quelques millisecondes sur le PHP côté ne changera rien.
Il y a deux/trois grandes choses avec PDO, par rapport à
mysql_*
:mysql_*
,pg_*
,oci_*
, ...mysqli_*
a un OO-API, mais pasmysql_*
)mysqli_*
, mais pasmysql_*
, encore une fois)BTW : je suis généralement à l'aide de PDO, soit "à la main", ou comme il est intégré dans /utilisé par les Zend Framework et/ou La Doctrine.
Au passage : Même si vous n'allez pas utiliser PDO, notez que l'utilisation de mysqli au lieu de mysql est recommandé.
Voir cette page de manuel PHP, à ce sujet.
J'ai fait quelques tests de performance pour comparer les fonctions Mysqli à PDO fonctions à l'aide de deux déclarations préparées à l'avance et régulière de requêtes directes (testé à l'aide de select sur Mysqlnd et les tables MyISAM).
J'ai trouvé que PDO requêtes sont juste un peu plus lent que Mysqli, mais seulement légèrement. C'est logique, puisque AOP utilisé à cette fin la plupart du temps juste un wrapper qui appelle les fonctions Mysqli. L'avantage de l'utilisation de PDO, c'est qu'il rend un peu plus facile de migrer vers une autre base de données parce que les noms de fonctions ne sont pas spécifiques à MySQL.
La performance réelle différence est dans le fait que vous utilisez les requêtes préparées. Il y a une grande et significative de la performance peine de d'utiliser les requêtes préparées. D'autres personnes qui l'ont testé ont trouvé les mêmes résultats.
Le seul moment où les requêtes préparées sont plus rapide si vous êtes à la préparation d'une requête une fois, puis en soumettant des milliers de fois avec différentes valeurs de données. Sinon, c'est toujours plus rapide d'utiliser mysqli::query() ou PDO::query(). Mais il est important d'être conscient que ces fonctions n'échappent pas à des valeurs de données pour vous, si vous avez besoin de se rappeler d'utiliser mysqli::real_ escape_ chaîne de caractères() ou PDO::quote() sur les variables de données.
Je voudrais généralement vous recommandons d'utiliser PDO, sauf si il y a une raison spécifique pour laquelle vous ne pouvez pas. Si il n'est pas peu de différence entre les deux et vous n'avez aucune raison de ne pas utiliser PDO, je crois qu'il serait mieux pour entrer dans la pratique de l'aide DB abstraction dans vos applications qu'avec mysql_* tout simplement parce qu'il est là. Je dirais que les meilleures pratiques gagner.
Dans les deux cas, vous devez appeler le même serveur mySQL à partir de la même serveur Php ... donc vous ne pouvez pas remarquer une grande différence.
Si vous voulez une bonne performance, pensez à cache (memcache ou un simple fichier Php ...) et de faire une bonne base de données de la structure (INDEX ...)
AOP fournir plus de fonctionnalités avec moins de ligne de codes Exemple:
Aop
MySQL_*
les deux la même fonctionnalité, mais vous comparer pour les codes
PDO est plus Humainement Lisible 🙂
Donc, ce que vous en pensez?
mysql_*
est obsolète.Si la performance n'est pas un "vrai problème" pour vous, vous devriez utiliser PDO. La performance se distingue par de faibles marges, et PDO a une très belle et le portable de la croix-interface de base de données qui peut vous faire économiser des maux de tête dans le cas où vous avez besoin d'utiliser plusieurs pilotes de base de données.
La
mysql_connect
fonction est obsolète depuis PHP 5.5.0, et comme avec la plupart des fonctions obsolètes, sera supprimé. Donc, préférez l'utilisation de PDO_MySQL (ou d'un autre MySQLi ) surmysql_connect
.Source: http://php.net/manual/en/function.mysql-connect.php
Certains Avantages de l'AOP:
AOP base de données de code de connexion:
Normales de connexion à la base MySQL code:
ou
Connexion à la base MySQL code facile, mais AOP a de nombreux avantage.