繁体   English   中英

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

[英]Zend_DB - Use native MySQL adapter instead of MySQLi or PDO?

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

而且我无权修改php.ini

在从事 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 的一些功能。

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

class My_Db_Adapter_MySQL extends Zend_Db_Adapter_Abstract {
     // your code
}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM