Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zwrócić kolumny liczb całkowitych i liczbowych z MySQL jako liczby całkowite i numeryczne w PHP?

Rozwiązaniem jest upewnienie się, że używasz mysqlnd sterownik dla php.

Skąd wiesz, że nie używasz mysqlnd?

Podczas przeglądania php -i , nie będzie nie wzmianka o "mysqlnd". pdo_mysql sekcja będzie miała coś takiego:

pdo_mysql

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

Jak to zainstalować?

Większość instrukcji instalacji dla L/A/M/P sugeruje apt-get install php5-mysql ale natywny sterownik dla MySQL jest instalowany przez inny pakiet:php5-mysqlnd . Odkryłem, że jest to dostępne w ppa:ondrej/php5-oldstable .

Aby przełączyć się na nowy sterownik (w Ubuntu):

  • Usuń stary sterownik:
    apt-get remove php5-mysql
  • Zainstaluj nowy sterownik:
    apt-get install php5-mysqlnd
  • Ponownie uruchom apache2:
    service apache2 restart

Jak sprawdzić, czy sterownik jest używany?

Teraz php -i wspomni o "mysqlnd" jawnie w pdo_mysql sekcja:

pdo_mysql

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

Ustawienia PDO

Upewnij się, że PDO::ATTR_EMULATE_PREPARES jest false (sprawdź ustawienia domyślne lub ustaw je):
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Upewnij się, że PDO::ATTR_STRINGIFY_FETCHES jest false (sprawdź ustawienia domyślne lub ustaw je):
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);

Zwrócone wartości

  • Typy zmiennoprzecinkowe (FLOAT, DOUBLE) są zwracane jako zmiennoprzecinkowe PHP.
  • Typy całkowite (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT †) są zwracane jako liczby całkowite PHP.
  • Typy o stałych punktach (DECIMAL, NUMERIC) są zwracane jako ciągi.

† BIGINTs o wartości większej niż 64 bity ze znakiem int (9223372036854775807) zwrócą jako ciąg (lub 32 bity w systemie 32-bitowym)

    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. Jak łączyć ciągi w MySQL za pomocą CONCAT()

  2. Zwiększenie wartości w zapytaniu o aktualizację MySQL

  3. UNIX_TIMESTAMP() Przykłady – MySQL

  4. Resetowanie hasła ROOT w MySQL 5.6

  5. MySQL — funkcja FOUND_ROWS() dla całkowitej liczby wierszy, których dotyczy problem