Результат запроса базы данных Zend преобразует значения столбцов в NULL

StackOverflow https://stackoverflow.com/questions/2312929

Вопрос

Я использую следующие инструкции, чтобы получить несколько регистров из моей базы данных.

Создайте необходимые модели (из модуля Params):

$obj_paramtype_model    = new Params_Model_DbTable_Paramtype();
$obj_param_model        = new Params_Model_DbTable_Param();

Получение доступных локалов из базы данных

// This returns a Zend_Db_Table_Row_Abstract class object
$obj_paramtype = $obj_paramtype_model->getParamtypeByValue('available_locales');

// This is a query used to add conditions to the next sentence. This is executed from the Params_Model_DbTable_Param instance class, that depends from Params_Model_DbTable_Paramtype class (reference map and dependentTables arrays are fine in both classes)
$obj_select = $this->select()->where('deleted_at IS NULL')->order('name');

// Execute the next query, applying the select restrictions. This returns a Zend_Db_Table_Rowset_Abstract class object. This means "Find Params by Paramtype"
$obj_params_rowset = $obj_paramtype->findDependentRowset('Params_Model_DbTable_Param', 'Paramtype', $obj_paramtype);

// Here the firebug log displays the queries....
Zend_Registry::get('log')->debug($obj_params_rowset);

У меня есть профилировщик для всех моих казней БД от Zend. На этом этапе объекты журнала и профилировщика (которые включают писатели Firebug), показывают выполненные запросы SQL, а последняя строка отображает полученный zend_db_table_rowset_abstract Cobve. Если я выполняю запросы SQL в некотором клиенте MySQL, результаты, как и ожидалось. Но автор журнала Zend Firebug отображает как нулевые значения столбца с латинскими символами (ñ).

Другими словами, внешний клиент SQL показываетes_co | Español de Colombia а также en_us | Англичане Соединенных Штатов Но запрос является результатом отображений Zend (и возвращает) es_co | нулевой а также en_us | Англичане Соединенных Штатов.

Я удалил ñ персонаж из Español de Colombia И результаты запроса просто хороши на моем экране Firebug Zend Log и в конечном элементе формы Zend.

База данных MySQL, таблицы и столбцы находятся в UTF -8 - UTF8_UNICODE_CI COLLATION. Все мои страницы Zend Framework находятся в UTF-8 Charset. Я использую XAMPP 1.7.1 (PHP 5.2.9, Apache на порту 90 и MySQL 5.1.33-Community), работающий на Windows 7 Ultimate; Zend Framework 1.10.1.

Извините, если есть так много информации, но я не знаю, почему это может случиться, поэтому я попытался предоставить как можно больше информации, чтобы помочь найти какой -то ответ.

Это было полезно?

Решение

Как вы подключаете связь с базой данных и определили ли вы в этом соединении? Это было то, что я упустил из виду, и, поскольку я не могу найти его в вашем вопросе, это может быть проблемой? Итак, когда я использую файл .ini для настройки базы данных, добавляя

resources.db.params.charset = utf8

Решены все мои проблемы с запросом UTF8. Надеюсь это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top