Frage

Ich verwende die nächsten Anweisungen, um einige Register aus meiner Datenbank zu erhalten.

Erstellen Sie die erforderlichen Modelle (aus dem Params -Modul):

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

Erhalten Sie die verfügbaren Orte aus der Datenbank

// 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);

Ich habe einen Profiler für alle meine DB -Ausführungen von Zend. Zu diesem Zeitpunkt zeigt die Protokoll- und Profiler -Objekte (die Firebug -Autoren enthält) die ausgeführten SQL -Abfragen an und die letzte Zeile zeigt das resultierende Objekt Zend_DB_Table_Rowset_abstract Class an. Wenn ich die SQL -Abfragen in einem MySQL -Client ausführe, sind die Ergebnisse wie erwartet. Der Zend Firebug -Protokollschreiber zeigt jedoch die Spaltenwerte mit lateinischen Zeichen (ñ) an.

Mit anderen Worten, der externe SQL -Client zeigtEs_co | Español de Colombia und en_us | Englisch der Vereinigten Staaten Die Abfrage resultiert jedoch von Zend Displays (und Returns) Es_co | Null und en_us | Englisch der Vereinigten Staaten.

Ich habe das gelöscht ñ Charakter von Español de Colombia Und die Abfrageergebnisse sind in meinem Zend Log Firebug -Bildschirm und im endgültigen Zend -Formelement in Ordnung.

Die MySQL -Datenbank, Tabellen und Spalten befinden sich in UTF -8 - UTF8_UNICODE_CI COLLATION. Alle meine Zend-Framework-Seiten befinden sich in UTF-8 Charset. Ich verwende XAMPP 1.7.1 (PHP 5.2.9, Apache bei Port 90 und MySQL 5.1.33-Community) unter Windows 7 Ultimate. Zend Framework 1.10.1.

Es tut mir leid, wenn es so viele Informationen gibt, aber ich weiß nicht wirklich, warum das passieren könnte. Deshalb habe ich versucht, so viele verwandte Informationen wie möglich zu liefern, um eine Antwort zu finden.

War es hilfreich?

Lösung

Wie stellen Sie die Verbindung mit der Datenbank her und haben Sie das Zeichen in dieser Verbindung definiert? Das war etwas, das ich übersehen habe und da ich es in Ihrer Frage nicht finden kann, könnte das das Problem sein? Wenn ich also die .ini -Datei verwende, um die Datenbank hinzuzufügen, fügen Sie hinzu

resources.db.params.charset = utf8

Löste alle meine Abfragen UTF8 -Probleme. Hoffe das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top