Pertanyaan PHP selalunya mengembalikan semua lajur sebagai rentetan, walaupun apabila berurusan dengan integer atau nilai angka dalam MySQL. Ini boleh menjadi masalah apabila mengendalikan data dengan keperluan format tertentu, seperti output JSON yang digunakan oleh berbilang perkhidmatan.
Walaupun sesetengah sumber mendakwa bahawa pengembalian jenis angka tidak mungkin, ini adalah tidak sepenuhnya benar. Salah tanggapan berikut boleh diketepikan:
Kunci untuk menyelesaikan isu ini ialah menggunakan pemacu mysqlnd untuk PHP. Tidak seperti pemacu asli, mysqlnd menyokong pengembalian jenis angka untuk integer (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT) dan lajur titik terapung berketepatan dua kali (DOUBLE).
Untuk mengesahkan sama ada anda menggunakan mysqlnd, jalankan php -i. Jika bahagian pdo_mysql menyebut "mysqlnd," pemandu hadir. Jika tidak, ikuti langkah berikut untuk memasangnya:
Ubuntu:
Sahkan Kehadiran: Selepas pemasangan, php -i kini sepatutnya memaparkan versi mysqlnd dalam bahagian pdo_mysql.
Selain itu, pastikan tetapan PDO berikut ditetapkan dengan betul:
Dengan mysqlnd dan tetapan PDO yang betul, anda kini boleh menanyakan jadual MySQL dan mendapatkan nilai angka dalam format yang dijangkakan:
$result = $pdo->query('SELECT * FROM table'); $row = $result->fetch(PDO::FETCH_OBJ); echo $row->integer_col; // 1 (integer) echo $row->double_col; // 1.55 (float) echo $row->decimal_col; // '1.20' (string)
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memastikan Lajur Angka dan Integer MySQL Dikembalikan sebagai Jenis Data yang Betul dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!