sql >> Database teknologi >  >> RDS >> Mysql

at hente et heltal fra DB ved hjælp af Zend Framework returnerer værdien som en streng

Jeg implementerede meget af Zend_Db kode i Zend Framework.

Som andre har sagt, grunden til, at Zend_Db returnerer strenge i stedet for native PHP-heltal eller flydende er, at PHPs databaseudvidelser returnerer strenge. Og grunden til det er, at der måske ikke er nogen indbygget PHP-type til at repræsentere en bestemt databasetype.

For eksempel MySQL's BIGINT er et 64-bit signeret heltal. Som standard er PHP int type er begrænset til 32-bit værdier, så hvis du henter data fra databasen og implicit konverterer dem til int , kan nogle værdier være afkortet. Der er flere andre lignende tilfælde, for float og datoer osv.

Brug af strengrepræsentationen for alle datatyper er den bedste måde at forblive enkel og konsistent på, være sikker på at undgå tab af data og undgå at skrive en masse leverandørspecifik specialtilfældekode for at udføre datatypekortlægning. Den ekstra kode ville også medføre en præstationsstraf.

Så hvis du har specifikke tilfælde, hvor du har brug for, at databaseresultater skal kortlægges til native PHP-datatyper, bør du implementere det selv i din applikationskode (f.eks. i en tilpasset Zend_Db_Table_Row klasse).



  1. LOG() Funktion i Oracle

  2. Har et problem med at få mysqli_query til at udføre

  3. Vil et SQL Server-job springe en planlagt kørsel over, hvis det allerede kører?

  4. Sådan bruges BETWEEN-tilstand ved at bruge hovedforespørgsel og underforespørgsler