Medan Integer MySQL Diambil sebagai Rentetan dalam PHP: Membongkar Penukaran
Apabila mengambil data daripada pangkalan data MySQL menggunakan PHP, anda mungkin menghadapi situasi yang membingungkan di mana medan integer dikembalikan sebagai rentetan. Tingkah laku yang tidak dijangka ini berpunca daripada sifat pengendalian data PHP.
Untuk memahami fenomena ini, pertimbangkan senario berikut:
// Query the database and retrieve the user's ID $result = $mysqli->query("SELECT userid FROM DB WHERE name='john'");
Andaikan pertanyaan berjaya mendapatkan semula ID pengguna, yang merupakan integer dalam pangkalan data, anda mungkin mengharapkan kod berikut untuk menyimpan nilai yang diambil sebagai integer pembolehubah:
$row = $result->fetch_assoc(); $id = $row['userid'];
Walau bagaimanapun, jika anda meneruskan untuk menyemak jenis data pembolehubah $id menggunakan gettype($id), anda akan terkejut apabila mendapati ia mengembalikan "rentetan".
Mengapa ini berlaku?
Inti isu terletak pada cara PHP mengendalikan data yang diambil daripada pangkalan data MySQL. Secara lalai, PHP menukar semua data yang diambil kepada rentetan, tanpa mengira jenis data asalnya dalam pangkalan data. Ini memastikan pengendalian data yang seragam, menjadikannya lebih mudah untuk aplikasi PHP diproses.
Menyelesaikan Isu
Beberapa kaedah boleh digunakan untuk menukar integer bertali rentetan kembali kepada jenis data integer yang dimaksudkan:
$id = (int) $row['userid']; // Equivalent to intval($row['userid'])
$result = $mysqli->query("SELECT userid AS INT FROM DB WHERE name='john'");
Oleh dengan memasukkan salah satu daripada penyelesaian ini ke dalam kod anda, anda boleh memastikan bahawa medan integer yang diambil daripada pangkalan data MySQL anda dikendalikan dengan betul sebagai integer dalam aplikasi PHP anda.
Atas ialah kandungan terperinci Mengapakah medan integer MySQL diambil sebagai rentetan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!