sql >> Database >  >> RDS >> Mysql

het ophalen van een geheel getal uit DB met behulp van Zend Framework retourneert de waarde als een tekenreeks

Ik heb veel van de Zend_Db . geïmplementeerd code in Zend Framework.

Zoals anderen hebben aangegeven, is de reden dat Zend_Db strings teruggeeft in plaats van native PHP integers of floats is dat PHP's database extensions strings teruggeven. En de reden daarvoor is dat er misschien geen native PHP-type is om een ​​bepaald databasetype te vertegenwoordigen.

Bijvoorbeeld MySQL's BIGINT is een 64-bits geheel getal met teken. Standaard is de PHP int type is beperkt tot 32-bits waarden, dus als u gegevens uit de database ophaalt en deze impliciet converteert naar int , kunnen sommige waarden worden afgekapt. Er zijn verschillende andere soortgelijke gevallen, voor float en datums, enz.

Het gebruik van de tekenreeksrepresentatie voor alle gegevenstypen is de beste manier om eenvoudig en consistent te blijven, gegevensverlies te voorkomen en te voorkomen dat u veel leverancierspecifieke code voor speciale gevallen schrijft om gegevenstypen in kaart te brengen. Die extra code zou ook een prestatiestraf opleveren.

Dus als je specifieke gevallen hebt waarin databaseresultaten moeten worden toegewezen aan native PHP-gegevenstypen, moet je dit zelf implementeren in je applicatiecode (bijvoorbeeld in een aangepaste Zend_Db_Table_Row klas).



  1. MediumBlob in Laravel-databaseschema

  2. Kan geen verbinding maken met Postgres via PHP, maar kan verbinding maken vanaf de opdrachtregel en PgAdmin op een andere machine

  3. hoe te gebruiken WHERE IN mysql opgeslagen procedure

  4. Verschil tussen UNIX_TIMESTAMP en NOW() in MySQL