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

Jak vrátím celočíselné a číselné sloupce z MySQL jako celá a číselná čísla v PHP?

Řešením je zajistit, že používáte mysqlnd ovladač pro php.

Jak víte, že nepoužíváte mysqlnd?

Při zobrazení php -i , bude ne zmínka o "mysqlnd". pdo_mysql sekce bude mít něco takového:

pdo_mysql

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

Jak jej nainstalujete?

Většina instalačních příruček pro L/A/M/P doporučuje apt-get install php5-mysql ale nativní ovladač pro MySQL je instalován pomocí jiného balíčku:php5-mysqlnd . Zjistil jsem, že to bylo k dispozici s ppa:ondrej/php5-oldstable .

Přepnutí na nový ovladač (na Ubuntu):

  • Odstraňte starý ovladač:
    apt-get remove php5-mysql
  • Nainstalujte nový ovladač:
    apt-get install php5-mysqlnd
  • Restartujte apache2:
    service apache2 restart

Jak zkontroluji, že se ovladač používá?

Nyní php -i zmíní "mysqlnd" výslovně v pdo_mysql sekce:

pdo_mysql

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

Nastavení PDO

Ujistěte se, že PDO::ATTR_EMULATE_PREPARES je false (zkontrolujte své výchozí hodnoty nebo je nastavte):
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Ujistěte se, že PDO::ATTR_STRINGIFY_FETCHES je false (zkontrolujte své výchozí hodnoty nebo je nastavte):
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);

Vrácené hodnoty

  • Typy s plovoucí desetinnou čárkou (FLOAT, DOUBLE) jsou vráceny jako plovoucí PHP.
  • Typy celých čísel (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT †) jsou vráceny jako celá čísla PHP.
  • Typy s pevnou čárkou (DECIMAL, NUMERIC) jsou vráceny jako řetězce.

† BIGINTy s hodnotou větší než 64bitový znak int (9223372036854775807) se vrátí jako řetězec (nebo 32 bitů na 32bitovém systému)

    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. Jak TO_BASE64() funguje v MariaDB

  2. Jak vytvořit vypočítané pole v Accessu

  3. SQL Inner Join – Jak spojit 3 tabulky v SQL a MySQL

  4. Naučte se MySQL – Týden nových technologií