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

Hvordan returnerer jeg heltal og numeriske kolonner fra MySQL som heltal og numeriske i PHP?

Løsningen er at sikre, at du bruger mysqlnd driver til php.

Hvordan ved du, at du ikke bruger mysqlnd?

Når du ser php -i , vil der være ingen omtale af "mysqlnd". pdo_mysql sektionen vil have noget som dette:

pdo_mysql

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

Hvordan installerer du det?

De fleste installationsvejledninger til L/A/M/P foreslår apt-get install php5-mysql men den oprindelige driver til MySQL er installeret af en anden pakke:php5-mysqlnd . Jeg fandt ud af, at dette var tilgængeligt med ppa:ondrej/php5-oldstable .

Sådan skifter du til den nye driver (på Ubuntu):

  • Fjern den gamle driver:
    apt-get remove php5-mysql
  • Installer den nye driver:
    apt-get install php5-mysqlnd
  • Genstart apache2:
    service apache2 restart

Hvordan kontrollerer jeg, at driveren bliver brugt?

Nu php -i vil nævne "mysqlnd" eksplicit i pdo_mysql afsnit:

pdo_mysql

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

PDO-indstillinger

Sørg for at PDO::ATTR_EMULATE_PREPARES er false (tjek dine standardindstillinger eller indstil det):
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Sørg for at PDO::ATTR_STRINGIFY_FETCHES er false (tjek dine standardindstillinger eller indstil det):
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);

Returnerede værdier

  • Flydende kommatyper (FLOAT, DOUBLE) returneres som PHP-flydende.
  • Heltalstyper (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT †) returneres som PHP-heltal.
  • Fix-point-typer (DECIMAL, NUMERIC) returneres som strenge.

† BIGINTs med en værdi større end en 64 bit signeret int (9223372036854775807) vil returnere som en streng (eller 32 bit på et 32 ​​bit system)

    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. RR vs YY i Oracle

  2. Hvordan sammenligner jeg 2 rækker fra den samme tabel (SQL-server)?

  3. 5 Microsoft Access tips og tricks

  4. Sådan tjekker du versionen af ​​oracle provider til ole-db. OraOLEDB.Oracle udbyder