Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah PDO Mengembalikan Nilai MySQL Berangka sebagai Rentetan, dan Bagaimana Saya Boleh Membetulkannya?

Mengapakah PDO Mengembalikan Nilai MySQL Berangka sebagai Rentetan, dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Lepaskan: 2024-12-11 11:51:11
asal
134 orang telah melayarinya

Why Does PDO Return Numeric MySQL Values as Strings, and How Can I Fix It?

Jenis Numerik dalam MySQL dengan PDO: Mengelakkan Rentetan

Selalunya apabila bekerja dengan pangkalan data, kami menghadapi isu mendapatkan semula nilai angka sebagai rentetan dan bukannya jenis data angka yang dijangkakan . Ini boleh menjadi kejadian biasa apabila menggunakan PDO (Objek Data PHP) dengan MySQL.

PDO menawarkan atribut yang dipanggil PDO::ATTR_STRINGIFY_FETCHES yang direka untuk mengendalikan penukaran ini, tetapi ia tidak berkenaan dengan pemacu MySQL. Ini membuatkan kita tertanya-tanya mengapa PDO mengembalikan rentetan untuk nilai angka dalam MySQL.

Jawapannya terletak pada tetapan emulasi PDO. Secara lalai, PDO meniru pernyataan yang disediakan untuk keserasian dengan pemacu yang lebih lama. Walau bagaimanapun, emulasi ini boleh menyebabkan nilai berangka dikembalikan sebagai rentetan.

Untuk mengelakkan ini, kita perlu melumpuhkan emulasi dengan menetapkan PDO::ATTR_EMULATE_PREPARES kepada false:

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

Dengan emulasi dilumpuhkan, MySQL akan mengembalikan jenis data asli untuk pernyataan yang disediakan, memastikan bahawa nilai berangka diambil sebagai data berangka tanpa sebarang penukaran rentetan.

Adalah penting untuk ambil perhatian bahawa secara amnya adalah amalan yang baik untuk menggunakan pernyataan yang disediakan semasa bekerja dengan pangkalan data untuk menghalang kelemahan suntikan SQL dan meningkatkan prestasi.

Atas ialah kandungan terperinci Mengapakah PDO Mengembalikan Nilai MySQL Berangka sebagai Rentetan, 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