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
Barbara Streisandasal
2024-12-10 06:51:10975semak imbas

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
    ))

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!

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