Rumah > pangkalan data > tutorial mysql > Mengapakah integer MySQL dikembalikan sebagai rentetan dalam PDO, dan bagaimana saya boleh mendapatkannya sebagai nombor?

Mengapakah integer MySQL dikembalikan sebagai rentetan dalam PDO, dan bagaimana saya boleh mendapatkannya sebagai nombor?

Linda Hamilton
Lepaskan: 2024-12-24 02:32:17
asal
510 orang telah melayarinya

Why are MySQL integers returned as strings in PDO, and how can I retrieve them as numbers?

Mengambil semula Jenis Angka daripada MySQL dengan PDO

Masalah:

Apabila mendapatkan data daripada Pangkalan data MySQL menggunakan PDO, nilai integer dikembalikan sebagai rentetan dan bukannya jenis angka mereka, walaupun apabila PDO atribut kelas PDO::ATTR_STRINGIFY_FETCHES ditetapkan kepada palsu.

Jawapan:

Memahami Isu Jenis Angka:

Ia perkara biasa untuk pangkalan data mengembalikan nilai berangka sebagai rentetan. Ini kerana sesetengah pemacu pangkalan data, seperti pemacu lalai MySQL, menganggap semua nilai sebagai rentetan.

Mencegah Stringifikasi:

Untuk mengelakkan nilai daripada dikembalikan sebagai rentetan, Pemacu Asli MySQL (mysqlnd) mesti digunakan. Pemacu ini menyokong mendapatkan semula jenis data asli, termasuk jenis angka.

Mengkonfigurasi mysqlnd:

Untuk menggunakan mysqlnd, tetapan berikut mesti ditambahkan pada tatasusunan pilihan sambungan PDO:

array(
    PDO::ATTR_EMULATE_PREPARES => false
)
Salin selepas log masuk

Contoh Kod:

$dsn = 'mysql:host=localhost;dbname=my_db';
$user = 'root';
$pass = 'password';

$pdo = new PDO($dsn, $user, $pass, array(
    PDO::ATTR_EMULATE_PREPARES => false
));
Salin selepas log masuk

Dengan menetapkan PDO::ATTR_EMULATE_PREPARES kepada palsu, emulasi pernyataan yang disediakan akan dimatikan, membolehkan mysqlnd mendapatkan semula nilai angka sebagai jenis data yang betul.

Atas ialah kandungan terperinci Mengapakah integer MySQL dikembalikan sebagai rentetan dalam PDO, dan bagaimana saya boleh mendapatkannya sebagai nombor?. 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