Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Lajur Integer dan Numerik sebagai Jenis Aslinya daripada MySQL dalam PHP?

Bagaimana untuk Mendapatkan Lajur Integer dan Numerik sebagai Jenis Aslinya daripada MySQL dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-07 05:25:16230semak imbas

How to Retrieve Integer and Numeric Columns as Their Native Types from MySQL in PHP?

Bagaimanakah cara saya mengembalikan lajur integer dan angka daripada MySQL sebagai integer dan angka dalam PHP?

Apabila bekerja dengan pangkalan data MySQL dalam PHP, memastikan bahawa lajur integer dan berangka diambil dan diwakili dengan betul adalah penting. Sambungan PDO dalam PHP menyediakan cara untuk melakukan ini, tetapi ia boleh menjadi masalah jika pemacu asli MySQL tidak digunakan.

Mengapa lajur integer dikembalikan sebagai rentetan

Pemandu asli MySQL tidak mempunyai sokongan untuk mengembalikan nilai angka sebagai integer dan angka. Ini bermakna, secara lalai, semua lajur diambil semula sebagai rentetan. Walaupun dengan bendera PDO PDO::ATTR_STRINGIFY_FETCHES ditetapkan kepada palsu, tingkah laku pemandu tidak berubah.

Cara membetulkannya

Penyelesaiannya ialah bertukar kepada mysqlnd pemandu untuk PHP. Pemacu ini menyokong mengembalikan nilai integer dan angka dalam jenis PHP aslinya.

Pemasangan

Untuk memasang pemacu mysqlnd pada Ubuntu, anda boleh menggunakan langkah berikut:

  1. Alih keluar pemacu asli MySQL lama: apt-get remove php5-mysql
  2. Pasang pemacu mysqlnd: apt-get install php5-mysqlnd
  3. Mulakan semula Apache: service apache2 restart

Pengesahan

Untuk mengesahkan bahawa pemacu mysqlnd adalah sedang digunakan, jalankan php -i. Outputnya kini harus memasukkan "mysqlnd" dalam bahagian pdo_mysql.

Tetapan PDO

Pastikan tetapan PDO berikut ditetapkan dengan betul:

  • PDO::ATTR_EMULATE_PREPARES sepatutnya false
  • PDO::ATTR_STRINGIFY_FETCHES sepatutnya palsu

Nilai yang dikembalikan

Dengan pemacu mysqlnd, jenis pulangan berikut digunakan:

  • Jenis titik terapung (Apung, DOUBLE): PHP terapung
  • Jenis integer (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT): Integer PHP
  • Jenis Titik Tetap (PERPULUHAN, ANGKA): rentetan

Contoh

Selepas bertukar kepada pemacu mysqlnd, anda akan dapat mendapatkan semula nilai integer dan angka dengan betul:

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);

$result = $pdo->query('SELECT * FROM table');
$row = $result->fetch(PDO::FETCH_OBJ);

echo $row->integer_col; // 1 (int)
echo $row->double_col; // 1.55 (float)
echo $row->decimal_col; // '1.20' (string)
echo $row->bigint_col; // '18446744073709551615' (string)

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Lajur Integer dan Numerik sebagai Jenis Aslinya daripada MySQL dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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