2009-11-03 50 views

回答

3

我在Zend_Db的適配器的工作相當多,而我的工作是ZF項目。

我們couldn't support一個Zend_Db適配器用於簡單的MySQL擴展,因爲Zend_Db有很多依賴於預準備語句,以及僅在MySQLi和PDO_MySQL擴展中才能找到的其他功能。

使用MySQL擴展沒有任何優勢。沒有什麼「土生土長」的。它只是一個MySQL客戶端庫的API綁定。

我建議你啓用MySQLi或PDO_MySQL之一,但你說你沒有權限這樣做。那麼你的選擇是:

  • 移動到另一臺服務器上確實啓用這些PHP擴展,或者,您可以訪問,使他們;
  • 如果Zend_Db支持其他數據庫的PHP擴展,並且在您的服務器上啓用了擴展,則可以使用除MySQL之外的其他RDBMS;
  • 完全放棄Zend_Db並直接使用MySQL擴展。

我推薦第一個選擇。


用戶@farzad claims他實施了Zend_Db的適配器轉/ MySQL的,但不得不犧牲一些Zend_Db的的功能。

+0

我最終寫了我的第一個db類直接使用mysql,是相當不錯的練習。我最大的錯誤是假設客戶端的服務器有'mysqli'或'pdo',下一次我會問。 – 2009-11-07 00:49:20

1

不,沒有本地適配器。但是你可以嘗試自己寫,這很簡單。你甚至不需要創建其他適配器所有的所有方法(但是你必須實現所有的抽象方法 - 至少讓它們爲空,否則你會得到致命錯誤)。您可以使用Mysqli適配器(例如)作爲您的基礎(我認爲,不是基類,而是代碼示例)。

class My_Db_Adapter_MySQL extends Zend_Db_Adapter_Abstract { 
    // your code 
} 

,然後只用My_Db_Adapter_MySQL作爲一個名稱爲您的適配器

+0

認真嗎?沒有人爲最新版本的Zend編寫過本地MySQL適配器? – 2009-11-03 06:10:20

+0

也許有人有,但在ZF的正式版本中沒有這樣的適配器。當然,不要寫自己的,你可以試試谷歌它 – 2009-11-03 06:32:07

+0

呃。 Mysqli是您使用它的意義上的「原生」適配器。 PHP的普通香草Mysql擴展是緩慢的,錯誤的,缺乏功能和折舊。 – jason 2009-11-07 00:36:57

0

這一個正常工作:https://github.com/beberlei/Zend_Db-Adapter-for-ext-mysql

我同意其他的答案,如果你能,你應該讓庫MySQLi或PDO_MYSQL。因爲我們不是生活在一個完美的血腥世界中,儘管開發人員總是能夠控制他們的部署環境,但我認爲我實際上也會向您提供您所要求的。

相關問題