Результат запроса базы данных Zend преобразует значения столбцов в NULL
-
22-09-2019 - |
Вопрос
Я использую следующие инструкции, чтобы получить несколько регистров из моей базы данных.
Создайте необходимые модели (из модуля 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. Надеюсь это поможет.