2009-11-03 5 views
2

Le serveur sur lequel je porte ne possède pas les extensions PDO ni Mysqli activées (bien qu'il exécute PHP5). Je ne vois aucune classe MySql.php dans Zend/Db/Adapter - Y a-t-il une convention à utiliser MySQL natif? Ou une sorte de solution de contournement? Peut-être en utilisant une ancienne version de Zend?Zend_DB - Utiliser l'adaptateur natif MySQL au lieu de MySQLi ou PDO?

Et je n'ai pas accès pour modifier le php.ini.

Répondre

3

je travaillais sur les adaptateurs Zend_Db un peu pendant que je travaillais sur le projet ZF.

Nous couldn't support Nous avons un adaptateur Zend_Db pour l'extension MySQL, car beaucoup de Zend_Db repose sur des instructions préparées, ainsi que d'autres fonctionnalités qui ne se trouvent que dans les extensions MySQLi et PDO_MySQL.

Il n'y a aucun avantage à utiliser l'extension MySQL. Il n'y a rien de "natif" à ce sujet. C'est juste une liaison d'API pour la bibliothèque cliente MySQL.

Je vous recommande d'activer MySQLi ou PDO_MySQL, mais vous dites que vous n'avez aucun accès pour le faire. Ensuite, vos choix sont:

  • Déplacer vers un autre serveur que -t ont ces extensions PHP est activée, ou vous donne accès à leur permettre;
  • Utilisez un autre SGBDR MySQL en plus, si Zend_Db prend en charge l'extension PHP pour cette autre base de données et l'extension est activée sur votre serveur;
  • Ignorez complètement Zend_Db et utilisez directement l'extension MySQL.

Je recommande le premier choix.


utilisateur @farzad claims il a mis en place un Zend_Db_Adapter pour ext/mysql, mais a dû sacrifier une partie de la fonctionnalité de Zend_Db.

+0

J'ai fini par écrire ma première classe db pour utiliser mysql directement, c'était une pratique assez décente. Ma grosse erreur était de supposer que le serveur du client avait 'mysqli' ou' pdo', la prochaine fois je demanderai avec certitude. –

1

Non, il n'y a pas d'adaptateur natif. Mais vous pouvez essayer d'écrire le vôtre, c'est simple. Vous n'avez même pas besoin de créer toutes les méthodes que les autres adaptateurs ont (mais vous devez implémenter toutes les méthodes abstraites - au moins les laisser vides, ou vous obtiendrez une erreur fatale). Vous pouvez utiliser un adaptateur Mysqli (par exemple) comme base pour le vôtre (je pense, pas une classe de base, mais un exemple de code).

class My_Db_Adapter_MySQL extends Zend_Db_Adapter_Abstract { 
    // your code 
} 

puis il suffit d'utiliser My_Db_Adapter_MySQL comme un nom pour votre adaptateur

+0

Sérieusement? Personne n'a jamais écrit un adaptateur MySQL natif pour la dernière version de Zend? –

+0

Peut-être que quelqu'un a, mais dans la version officielle de ZF il n'y a pas de tels adaptateurs. Bien sûr, au lieu d'écrire votre propre, vous pouvez essayer de google pour cela –

+0

Uh. Mysqli est un adaptateur «natif» dans le sens où vous l'utilisez. L'extension Mysql pour PHP est lente, boguée, dépourvue de fonctionnalités et dépréciée. – jason

0

Celui-ci fonctionne très bien: https://github.com/beberlei/Zend_Db-Adapter-for-ext-mysql

Je suis d'accord avec les autres réponses que vous devez activer mysqli ou pdo_mysql si vous le pouvez. Comme nous ne vivons pas dans un monde parfait où les développeurs ont toujours le contrôle de leurs environnements de déploiement, j'ai pensé que je vous donnerais ce que vous avez demandé.

Questions connexes