簡體   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