我正在移植的服務器沒有啓用PDO或Mysqli擴展(儘管它正在運行PHP5)。我在Zend/Db/Adapter
中看不到任何MySql.php
類 - 是否有一些使用本機MySQL的約定?或者某種解決方法?也許使用舊版本的Zend
?Zend_DB - 使用本機MySQL適配器而不是MySQLi或PDO?
而且我無權修改php.ini
。
我正在移植的服務器沒有啓用PDO或Mysqli擴展(儘管它正在運行PHP5)。我在Zend/Db/Adapter
中看不到任何MySql.php
類 - 是否有一些使用本機MySQL的約定?或者某種解決方法?也許使用舊版本的Zend
?Zend_DB - 使用本機MySQL適配器而不是MySQLi或PDO?
而且我無權修改php.ini
。
我在Zend_Db的適配器的工作相當多,而我的工作是ZF項目。
我們couldn't support一個Zend_Db適配器用於簡單的MySQL擴展,因爲Zend_Db有很多依賴於預準備語句,以及僅在MySQLi和PDO_MySQL擴展中才能找到的其他功能。
使用MySQL擴展沒有任何優勢。沒有什麼「土生土長」的。它只是一個MySQL客戶端庫的API綁定。
我建議你啓用MySQLi或PDO_MySQL之一,但你說你沒有權限這樣做。那麼你的選擇是:
我推薦第一個選擇。
用戶@farzad claims他實施了Zend_Db的適配器轉/ MySQL的,但不得不犧牲一些Zend_Db的的功能。
不,沒有本地適配器。但是你可以嘗試自己寫,這很簡單。你甚至不需要創建其他適配器所有的所有方法(但是你必須實現所有的抽象方法 - 至少讓它們爲空,否則你會得到致命錯誤)。您可以使用Mysqli適配器(例如)作爲您的基礎(我認爲,不是基類,而是代碼示例)。
class My_Db_Adapter_MySQL extends Zend_Db_Adapter_Abstract {
// your code
}
,然後只用My_Db_Adapter_MySQL作爲一個名稱爲您的適配器
認真嗎?沒有人爲最新版本的Zend編寫過本地MySQL適配器? – 2009-11-03 06:10:20
也許有人有,但在ZF的正式版本中沒有這樣的適配器。當然,不要寫自己的,你可以試試谷歌它 – 2009-11-03 06:32:07
呃。 Mysqli是您使用它的意義上的「原生」適配器。 PHP的普通香草Mysql擴展是緩慢的,錯誤的,缺乏功能和折舊。 – jason 2009-11-07 00:36:57
這一個正常工作:https://github.com/beberlei/Zend_Db-Adapter-for-ext-mysql
我同意其他的答案,如果你能,你應該讓庫MySQLi或PDO_MYSQL。因爲我們不是生活在一個完美的血腥世界中,儘管開發人員總是能夠控制他們的部署環境,但我認爲我實際上也會向您提供您所要求的。
我最終寫了我的第一個db類直接使用mysql,是相當不錯的練習。我最大的錯誤是假設客戶端的服務器有'mysqli'或'pdo',下一次我會問。 – 2009-11-07 00:49:20