2

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

而且我无权修改php.ini.

4

3 回答 3

3

在从事 ZF 项目的同时,我也从事 Zend_Db 适配器的工作。

我们不能为普通的 MySQL 扩展支持 Zend_Db 适配器,因为 Zend_Db 的大部分依赖于准备好的语句,以及仅在 MySQLi 和 PDO_MySQL 扩展中发现的其他特性。

使用 MySQL 扩展没有任何优势。没有什么“原生”的。它只是 MySQL 客户端库的 API 绑定。

我建议您启用 MySQLi 或 PDO_MySQL 之一,但您说您无权执行此操作。那么你的选择是:

  • 移至启用了这些 PHP 扩展的另一台服务器或允许您访问以启用它们;
  • 使用除 MySQL 之外的另一个 RDBMS,如果 Zend_Db 支持该其他数据库的 PHP 扩展并且在您的服务器上启用了该扩展;
  • 完全放弃 Zend_Db 并直接使用 MySQL 扩展。

我推荐第一选择。


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

于 2009-11-07T00:33:56.697 回答
1

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

class My_Db_Adapter_MySQL extends Zend_Db_Adapter_Abstract {
     // your code
}

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

于 2009-11-03T06:01:24.307 回答
0

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

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

于 2011-11-30T22:39:39.043 回答