Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да върна цели и числови колони от MySQL като цели числа и числа в PHP?

Решението е да се уверите, че използвате mysqlnd драйвер за php.

Как да разберете, че не използвате mysqlnd?

Когато преглеждате php -i , няма да има не споменаване на "mysqlnd". pdo_mysql раздел ще има нещо подобно:

pdo_mysql

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

Как го инсталирате?

Повечето ръководства за инсталиране на L/A/M/P предлагат apt-get install php5-mysql но естественият драйвер за MySQL е инсталиран от различен пакет:php5-mysqlnd . Открих, че това е налично с ppa:ondrej/php5-oldstable .

За да превключите към новия драйвер (в Ubuntu):

  • Премахнете стария драйвер:
    apt-get remove php5-mysql
  • Инсталирайте новия драйвер:
    apt-get install php5-mysqlnd
  • Рестартиране на apache2:
    service apache2 restart

Как да проверя дали драйверът се използва?

Сега php -i ще споменава "mysqlnd" изрично в pdo_mysql раздел:

pdo_mysql

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

Настройки на PDO

Уверете се, че PDO::ATTR_EMULATE_PREPARES е false (проверете настройките си по подразбиране или ги задайте):
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Уверете се, че PDO::ATTR_STRINGIFY_FETCHES е false (проверете настройките си по подразбиране или ги задайте):
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);

Върнати стойности

  • Типове с плаваща запетая (FLOAT, DOUBLE) се връщат като PHP числа с плаваща запетая.
  • Типове цели числа (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT †) се връщат като PHP цели числа.
  • Типове с фиксирани точки (DECIMAL, NUMERIC) се връщат като низове.

† BIGINT със стойност, по-голяма от 64-битов подписан int (9223372036854775807) ще се върне като низ (или 32 бита на 32-битова система)

    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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е разликата между обратната отметка и квадратната скоба в SQL изразите?

  2. Балансиране на натоварването с ProxySQL за Percona XtraDB Cluster

  3. Как да ПОРЪЧАТЕ ПО SUM() в MySQL?

  4. Codeigniter - множество връзки към база данни

  5. MySQL:NULL срещу