Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Das Abrufen einer Ganzzahl aus der DB mit Zend Framework gibt den Wert als String zurück

Ich habe viel von Zend_Db implementiert Code im Zend Framework.

Wie andere gesagt haben, ist der Grund, dass Zend_Db Strings anstelle von nativen PHP-Ganzzahlen oder Gleitkommazahlen zurückgibt, ist, dass die Datenbankerweiterungen von PHP Strings zurückgeben. Und der Grund dafür ist, dass es möglicherweise keinen nativen PHP-Typ gibt, um einen bestimmten Datenbanktyp darzustellen.

Zum Beispiel BIGINT von MySQL ist eine vorzeichenbehaftete 64-Bit-Ganzzahl. Standardmäßig ist der PHP int type ist auf 32-Bit-Werte beschränkt, wenn Sie also Daten aus der Datenbank abrufen und implizit in int konvertieren , werden einige Werte möglicherweise abgeschnitten. Es gibt mehrere andere ähnliche Fälle für float und Daten usw.

Die Verwendung der Zeichenfolgendarstellung für alle Datentypen ist der beste Weg, um einfach und konsistent zu bleiben, Datenverluste zu vermeiden und das Schreiben von viel herstellerspezifischem Sonderfallcode für die Datentypzuordnung zu vermeiden. Dieser zusätzliche Code würde auch zu Leistungseinbußen führen.

Wenn Sie also spezielle Fälle haben, in denen Sie Datenbankergebnisse auf native PHP-Datentypen abbilden müssen, sollten Sie dies selbst in Ihrem Anwendungscode implementieren (z. B. in einer benutzerdefinierten Zend_Db_Table_Row Klasse).