sql >> Database >  >> RDS >> Mysql

Hoe retourneer ik gehele en numerieke kolommen uit MySQL als gehele getallen en cijfers in PHP?

De oplossing is ervoor te zorgen dat u de mysqlnd . gebruikt stuurprogramma voor php.

Hoe weet je dat je mysqlnd niet gebruikt?

Bij het bekijken van php -i , er is geen vermelding van "mysqlnd". De pdo_mysql sectie zal zoiets als dit hebben:

pdo_mysql

PDO Driver for MySQL => enabled Client API version => 5.1.72

Hoe installeer je het?

De meeste installatiehandleidingen voor L/A/M/P suggereren apt-get install php5-mysql maar de native driver voor MySQL wordt geïnstalleerd door een ander pakket:php5-mysqlnd . Ik ontdekte dat dit beschikbaar was met de ppa:ondrej/php5-oldstable .

Overschakelen naar het nieuwe stuurprogramma (op Ubuntu):

  • Verwijder het oude stuurprogramma:
    apt-get remove php5-mysql
  • Installeer het nieuwe stuurprogramma:
    apt-get install php5-mysqlnd
  • Herstart apache2:
    service apache2 restart

Hoe controleer ik of het stuurprogramma wordt gebruikt?

Nu php -i zal "mysqlnd" expliciet vermelden in de pdo_mysql sectie:

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.10 - 20111026 - $Id:      e707c415db32080b3752b232487a435ee0372157 $

BOB-instellingen

Zorg ervoor dat PDO::ATTR_EMULATE_PREPARES is false (controleer uw standaardwaarden of stel deze in):
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Zorg ervoor dat PDO::ATTR_STRINGIFY_FETCHES is false (controleer uw standaardinstellingen of stel deze in):
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);

Geretourneerde waarden

  • Floating-point types (FLOAT, DOUBLE) worden geretourneerd als PHP floats.
  • Gehele getallen (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT †) worden geretourneerd als gehele PHP-getallen.
  • Typen met vaste punten (DECIMAAL, NUMERIEK) worden geretourneerd als tekenreeksen.

† BIGINT's met een waarde groter dan een 64-bits ondertekende int (9223372036854775807) worden geretourneerd als een tekenreeks (of 32 bits op een 32-bits systeem)

    object(stdClass)[915]
      public 'integer_col' => int 1
      public 'double_col' => float 1.55
      public 'float_col' => float 1.5
      public 'decimal_col' => string '1.20' (length=4)
      public 'bigint_col' => string '18446744073709551615' (length=20)


  1. Ondersteunt Microsoft OLE DB Provider voor SQL Server TLS 1.2?

  2. PHP - Beveiligde ledenpagina's met een inlogsysteem

  3. Hoe SIGN() werkt in MariaDB

  4. Hoe de WEIGHT_STRING()-functie werkt in MySQL