sql >> Databáze >  >> RDS >> Mysql

načtení Integer z DB pomocí Zend Framework vrátí hodnotu jako řetězec

Implementoval jsem hodně z Zend_Db kód v Zend Framework.

Jak uvedli ostatní, důvodem je Zend_Db vrací řetězce místo nativních PHP celých čísel nebo plovoucích je to, že rozšíření databáze PHP vracejí řetězce. A důvodem je, že nemusí existovat žádný nativní typ PHP, který by reprezentoval určitý typ databáze.

Například BIGINT MySQL je 64bitové celé číslo se znaménkem. Ve výchozím nastavení PHP int typ je omezen na 32bitové hodnoty, takže pokud načtete data z databáze a implicitně je převedete na int , některé hodnoty mohou být zkráceny. Existuje několik dalších podobných případů pro float a data atd.

Použití řetězcové reprezentace pro všechny datové typy je nejlepším způsobem, jak zůstat jednoduchý a konzistentní, zajistit si bezpečnost před ztrátou dat a vyhnout se psaní velkého množství speciálních kódů specifických pro dodavatele pro mapování datových typů. Tento extra kód by také znamenal penalizaci výkonu.

Pokud tedy máte konkrétní případy, kdy potřebujete mapovat výsledky databáze na nativní datové typy PHP, měli byste to sami implementovat do kódu vaší aplikace (např. do vlastního Zend_Db_Table_Row třída).



  1. Před vložením do MySQL DB ve skriptu PHP zkontrolujte, zda hodnota existuje

  2. Jak monitorovat kontejnery MySQL pomocí Prometheus – nasazení na Standalone a Swarm::Část první

  3. Transakce MySQL:SELECT + INSERT

  4. Co znamená klíčové slovo KEY?