sql >> Databasteknik >  >> RDS >> Mysql

att hämta ett heltal från DB med Zend Framework returnerar värdet som en sträng

Jag implementerade mycket av Zend_Db kod i Zend Framework.

Som andra har sagt, anledningen till att Zend_Db returnerar strängar istället för inbyggda PHP-heltal eller flytande är att PHPs databastillägg returnerar strängar. Och anledningen till det är att det kanske inte finns någon inbyggd PHP-typ som representerar en viss databastyp.

Till exempel MySQL:s BIGINT är ett 64-bitars signerat heltal. Som standard är PHP int typen är begränsad till 32-bitars värden, så om du hämtar data från databasen och implicit konverterar den till int , kan vissa värden vara trunkerade. Det finns flera andra liknande fall, för float och datum osv.

Att använda strängrepresentationen för alla datatyper är det bästa sättet att förbli enkelt och konsekvent, vara säker på att undvika dataförlust och undvika att skriva massor av leverantörsspecifik specialfallskod för att göra datatypsmapping. Den extra koden skulle också medföra prestationsstraff.

Så om du har specifika fall där du behöver databasresultat som ska mappas till inbyggda PHP-datatyper, bör du implementera det själv i din applikationskod (t.ex. i en anpassad Zend_Db_Table_Row klass).



  1. Hur kan jag göra HTTP-förfrågan från SQL-servern?

  2. Heroku MySQL Auto Increment

  3. '𠂉' Inte ett giltigt unicode-tecken, men i unicode-teckenuppsättningen?

  4. Lägg till en kolumn till en befintlig tabell i SQLite