Mengambil Jenis Data Berangka daripada MySQL Menggunakan PDO
Apabila menggunakan PDO dan MySQL, anda mungkin menghadapi keadaan di mana nilai angka yang diambil daripada pangkalan data adalah dikembalikan sebagai rentetan dan bukannya jenis data berangka. Perbezaan ini boleh timbul disebabkan oleh gelagat lalai sambungan PHP Database Objects (PDO).
Mengapa Rentetan Daripada Nombor?
Malangnya, ia adalah perkara biasa untuk terima rentetan dan bukannya nombor apabila menanyakan pangkalan data. Ini berlaku kerana sambungan PDO biasanya menukar nilai berangka daripada pangkalan data kepada rentetan untuk memastikan keserasian dengan semua pemacu pangkalan data yang disokong.
Melumpuhkan Penukaran Rentetan
Untuk mengelakkan PDO daripada melakukan rentetan nilai angka, anda boleh mengubah suai atribut PDO PDO::ATTR_EMULATE_PREPARES. Dengan menetapkan atribut ini kepada palsu, anda boleh melumpuhkan emulasi pernyataan yang disediakan dan membenarkan MySQL mengembalikan jenis data asli, termasuk jenis angka.
$dsn = 'mysql:dbname=database;host=localhost'; $pdo = new PDO($dsn, $user, $pass, array( PDO::ATTR_EMULATE_PREPARES => false ));
PDO::ATTR_STRINGIFY_FETCHES
Atribut PDO::ATTR_STRINGIFY_FETCHES tidak boleh digunakan pada pemacu MySQL PDO. Atribut ini bertujuan untuk pemacu pangkalan data lain yang menyokong rentetan pengembalian dan bukannya jenis data asli.
Oleh itu, dengan melumpuhkan emulasi pernyataan yang disediakan oleh PDO, anda boleh memastikan bahawa nilai berangka dikembalikan sebagai jenis data asli, menghalang rentetan dan membenarkan anda untuk bekerja dengan data dengan betul.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Jenis Data Berangka daripada MySQL Menggunakan PDO Tanpa Penukaran Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!