Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

buscar um Integer do DB usando Zend Framework retorna o valor como uma string


Eu implementei muito do Zend_Db código no Zend Framework.

Como outros afirmaram, o motivo pelo qual Zend_Db retorna strings ao invés de inteiros ou floats nativos do PHP é que as extensões de banco de dados do PHP retornam strings. E a razão para isso é que pode não haver nenhum tipo PHP nativo para representar determinado tipo de banco de dados.

Por exemplo, BIGINT do MySQL é um inteiro com sinal de 64 bits. Por padrão, o PHP int type é limitado a valores de 32 bits, portanto, se você buscar dados do banco de dados e convertê-los implicitamente em int , alguns valores podem ser truncados. Existem vários outros casos semelhantes, para float e datas, etc

Usar a representação de string para todos os tipos de dados é a melhor maneira de permanecer simples e consistente, estar seguro para evitar a perda de dados e evitar escrever muitos códigos de casos especiais específicos do fornecedor para fazer o mapeamento de tipos de dados. Esse código extra também incorreria em uma penalidade de desempenho.

Portanto, se você tiver casos específicos em que precisa que os resultados do banco de dados sejam mapeados para tipos de dados PHP nativos, você deve implementá-lo você mesmo no código do aplicativo (por exemplo, em um Zend_Db_Table_Row personalizado classe).