Zend_DB - 使用本机MySQL适配器而不是MySQLi或PDO?

时间:2009-11-03 05:58:14

标签: mysql mysqli zend-db

我移植到的服务器没有启用PDO或Mysqli扩展(虽然它运行的是PHP5)。我在MySql.php中没有看到任何Zend/Db/Adapter类 - 是否有一些使用原生MySQL的约定?还是某种解决方法?也许使用较旧版本的Zend

我无权修改php.ini

3 个答案:

答案 0 :(得分:3)

当我参与ZF项目时,我在Zend_Db适配器上工作了很多。

我们couldn't support用于普通MySQL扩展的Zend_Db适配器,因为Zend_Db的大部分依赖于预处理语句,以及仅在MySQLi和PDO_MySQL扩展中找到的其他功能。

使用MySQL扩展没有任何好处。关于它没有任何“原生”。它只是MySQL客户端库的API绑定。

我建议你启用一个MySQLi或PDO_MySQL,但是你说你无权访问它。然后你的选择是:

  • 转移到 启用了这些PHP扩展程序的其他服务器,或者允许您启用它们;
  • 如果Zend_Db支持该其他数据库的PHP扩展并且在您的服务器上启用了扩展,则使用除MySQL以外的其他RDBMS;
  • 完全放弃Zend_Db并直接使用MySQL扩展。

我推荐第一个选择。


用户@farzad claims他为ext / mysql实现了Zend_Db适配器,但不得不牺牲Zend_Db的一些功能。

答案 1 :(得分:1)

不,没有原生适配器。但是你可以尝试编写自己的,这很简单。您甚至不需要创建其他适配器具有的所有方法(但您必须实现所有抽象方法 - 至少将它们留空,否则您将获得致命错误)。您可以使用Mysqli适配器(例如)作为您的基础(我认为,不是基类,而是代码示例)。

class My_Db_Adapter_MySQL extends Zend_Db_Adapter_Abstract {
     // your code
}

然后只使用My_Db_Adapter_MySQL作为适配器的名称

答案 2 :(得分:0)

这个工作正常:https://github.com/beberlei/Zend_Db-Adapter-for-ext-mysql

我同意其他答案,如果可以,你应该启用mysqli或pdo_mysql。因为我们并没有生活在一个完美的血腥世界,开发人员总是可以控制他们的部署环境,但我认为我实际上也会给你你所要求的东西。