Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mengembalikan kolom integer dan numerik dari MySQL sebagai integer dan numerik di PHP?

Solusinya adalah memastikan bahwa Anda menggunakan mysqlnd driver untuk php.

Bagaimana Anda tahu bahwa Anda tidak menggunakan mysqlnd?

Saat melihat php -i , tidak akan ada tidak penyebutan "mysqlnd". pdo_mysql bagian akan memiliki sesuatu seperti ini:

pdo_mysql

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

Bagaimana cara menginstalnya?

Kebanyakan panduan instalasi untuk L/A/M/P menyarankan apt-get install php5-mysql tetapi driver asli untuk MySQL diinstal oleh paket yang berbeda:php5-mysqlnd . Saya menemukan bahwa ini tersedia dengan ppa:ondrej/php5-oldstable .

Untuk beralih ke driver baru (di Ubuntu):

  • Hapus driver lama:
    apt-get remove php5-mysql
  • Instal driver baru:
    apt-get install php5-mysqlnd
  • Mulai ulang apache2:
    service apache2 restart

Bagaimana cara memeriksa apakah driver sedang digunakan?

Sekarang php -i akan menyebutkan "mysqlnd" secara eksplisit di pdo_mysql bagian:

pdo_mysql

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

Setelan PDO

Pastikan PDO::ATTR_EMULATE_PREPARES adalah false (periksa default Anda atau setel):
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Pastikan PDO::ATTR_STRINGIFY_FETCHES adalah false (periksa default Anda atau setel):
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);

Nilai yang dikembalikan

  • Tipe floating-point (FLOAT, DOUBLE) dikembalikan sebagai float PHP.
  • Jenis bilangan bulat (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT ) dikembalikan sebagai bilangan bulat PHP.
  • Jenis Titik Tetap (DECIMAL, NUMERIC) dikembalikan sebagai string.

BIGINT dengan nilai lebih besar dari 64 bit yang ditandatangani (9223372036854775807) akan kembali sebagai string (atau 32 bit pada sistem 32 bit)

    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. akses ditolak untuk memuat infile data di MySQL

  2. Panduan Merancang Database Untuk RBAC Di MySQL

  3. LAST_DAY() Contoh – MySQL

  4. Bagaimana memilih dari MySQL di mana nama Tabel adalah Variabel

  5. Kesalahan fatal:Panggilan ke fungsi yang tidak ditentukan session_register()