Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah PDO MySQL Integer Saya Mengambil Rentetan, dan Bagaimana Saya Boleh Membetulkannya?

Mengapakah PDO MySQL Integer Saya Mengambil Rentetan, dan Bagaimana Saya Boleh Membetulkannya?

Barbara Streisand
Lepaskan: 2024-12-10 06:51:10
asal
1004 orang telah melayarinya

Why Are My PDO MySQL Integer Retrieves Strings, and How Can I Fix It?

Pengambilan Numerik Bertali PDO: Misteri Terbongkar

Semasa menggunakan PDO bersama MySQL, anda mungkin mengalami keanehan: mendapatkan nilai integer daripada pangkalan data hanya untuk berakhir dengan perwakilan rentetan dan bukannya jenis berangka. Mari kita mendalami cara untuk menyelesaikan masalah ini.

Pengubahsuaian Atribut Gagal

Dalam bidang sifat PDO terletak PDO::ATTR_STRINGIFY_FETCHES, yang kononnya menyelesaikan isu ini. Walau bagaimanapun, percubaan untuk mengubah suai untuk pemacu MySQL selalunya menghasilkan mesej ralat.

Rentetan Numerik: Satu Norma?

Anehnya, mendapatkan rentetan daripada nombor daripada pertanyaan pangkalan data adalah lebih biasa daripada yang anda fikirkan. Tingkah laku ini disebabkan oleh tetapan lalai emulasi PDO bagi pernyataan yang disediakan.

Penyelesaian: Penyata Disediakan Tanpa Emulasi

Kunci untuk menyelesaikan dilema ini terletak pada melumpuhkan emulasi kenyataan yang disediakan. Begini caranya:

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

Dengan mematikan emulasi, anda membenarkan mysqlnd (tersedia dalam PHP 5.3 dan lebih baharu) mengembalikan jenis data asli daripada pernyataan yang disediakan, termasuk integer sebagai nilai berangka.

Nota Sampingan yang Berbaloi

Perlu disebut bahawa menggaji kenyataan yang disediakan adalah amalan yang sangat disyorkan tanpa mengira kebimbangan perolehan semula angka. Ia bukan sahaja meningkatkan keselamatan kod tetapi juga berpotensi meningkatkan prestasi. Jadi, pertimbangkan penyelesaian ini sebagai satu kelebihan dalam usaha anda untuk pengendalian data yang cekap.

Atas ialah kandungan terperinci Mengapakah PDO MySQL Integer Saya Mengambil 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