Rumah > pangkalan data > tutorial mysql > Mengapa Nilai Angka MySQL Saya Dikembalikan sebagai Rentetan dalam PHP, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Nilai Angka MySQL Saya Dikembalikan sebagai Rentetan dalam PHP, dan Bagaimana Saya Boleh Membetulkannya?

Barbara Streisand
Lepaskan: 2024-12-05 07:29:11
asal
773 orang telah melayarinya

Why Are My MySQL Numeric Values Returned as Strings in PHP, and How Can I Fix It?

Menyelesaikan Percanggahan dalam Mengembalikan Nilai Integer dan Numerik daripada MySQL dalam PHP

Apabila mendapatkan data daripada MySQL menggunakan PHP, ia boleh membingungkan untuk menghadapi ketidakkonsistenan jenis apabila lajur integer dan angka dikembalikan sebagai rentetan dan bukannya data yang dimaksudkan jenis.

Isu Pemandu

Adalah penting untuk menentukan pemacu asas yang digunakan untuk sambungan pangkalan data. Masalah selalunya berpunca daripada menggunakan pemacu MySQL asli, yang tidak mempunyai keupayaan untuk mengembalikan jenis angka sebagai integer.

Mengenal pasti Pemacu MySQLnd

Untuk memastikan sama ada anda menggunakan pemacu MySQL asli, periksa output php -i. Jika tiada sebutan "mysqlnd" terdapat dalam bahagian pdo_mysql, anda mungkin menggunakan pemacu asli.

Bertukar kepada Pemacu MySQLnd

Penyelesaian terletak pada bertukar kepada pemacu mysqlnd, yang menyokong pengembalian jenis angka dengan betul. Di Ubuntu, ini boleh dicapai dengan:

sudo apt-get remove php5-mysql
sudo apt-get install php5-mysqlnd
sudo service apache2 restart
Salin selepas log masuk

Tetapan PDO

Setelah pemacu mysqlnd dipasang, pastikan tetapan PDO berikut ditetapkan dengan betul:

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
Salin selepas log masuk

Dikembalikan Nilai

Selepas melaksanakan langkah di atas, hasil pertanyaan MySQL akan mengembalikan jenis angka seperti yang dijangkakan:

  • Jenis titik terapung (FLOAT, DOUBLE) semasa PHP terapung
  • Jenis integer (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT) sebagai PHP integer
  • Jenis Titik Tetap (PERPULUHAN, NUMERIC) sebagai rentetan (nota: BIGINT melebihi 64 bit juga akan kembali sebagai rentetan)

Contoh nilai yang dikembalikan ialah:

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)
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Nilai Angka MySQL Saya Dikembalikan sebagai Rentetan dalam PHP, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan