Ответ 1
Во-первых, я вырвал настройку базы данных в свою собственную функцию init так:
/**
* Initiate Zend Autoloader
* @return Zend_Db_Adapter
*/
protected function _initDatabase()
{
$resource = $this->getPluginResource('db');
$db = $resource->getDbAdapter();
Zend_Registry::set("db", $db);
return $db;
}
В приведенном выше примере используются ресурсы, которые являются предопределенными конфигурационными структурами для определенных общих задач в Zend Framework. Просто имея следующее в моем файле конфигурации application.ini, мы можем обратиться к ресурсу 'db' в Bootstrap выше:
resources.db.adapter = "pdo_sqlite"
resources.db.params.host = "localhost"
resources.db.params.username = "databaseuser"
resources.db.params.password = "mysecretpassword"
resources.db.params.dbname = APPLICATION_PATH "/data/db/ccymod.db"
resources.db.isDefaultTableAdapter = true
Этот пример предназначен для sqlite db, но MySQL будет похож, но с pdo_mysql и dbname не будет путь к файлу, а строка.
Дополнительную документацию по ресурсам можно найти здесь:
http://framework.zend.com/manual/en/zend.application.available-resources.html
Теперь, используя раздел конфигурации ресурсов, мы можем добавить к нему следующие строки, чтобы установить набор символов базы данных следующим образом:
resources.db.params.charset = "utf8"
resources.db.params.driver_options.1002 = "SET NAMES utf8;"
Если у вас все еще есть проблемы, взгляните на блог блога Rob Allen zend Framework, посвященный akrabat dot com, и комментарии, связанные с номером 45 и последующие настройки UTF8 и mysql для ресурсов ZF.