Nomor kartu kredit bukanlah "angka" dalam pengertian matematis, itu hanya rangkaian angka. Anda tidak perlu bertanya "berapa nomor kartu ini plus satu?" atau "...kali dua?", tetapi Anda mungkin ingin bertanya "berapa empat digit pertama dari nomor kartu ini?" atau "empat terakhir...?"
Jika Anda memperlakukannya sebagai angka, itu akan menjadi angka yang jauh lebih besar daripada yang biasanya Anda gunakan:44443333322221111 (nomor kartu tes Visa) adalah "4 kuadriliun 444 triliun 333 miliar 322 juta 221 ribu seratus 11".
Yang penting, jumlah terbesar yang dapat disimpan dalam bilangan bulat 32-bit yang ditandatangani - yang Anda dapatkan ketika Anda menentukan "int" dalam SQL - hanya lebih dari 2 miliar, jadi nomor kartu tidak mendekati pas. Basis data Anda akan memberi Anda kesalahan, atau hanya menyimpan beberapa nomor lain yang sesuai - dalam kasus Anda, itu hanya menyimpan nomor tertinggi.
Anda dapat mengubah kolom Anda menjadi "bigint" (bertanda tangan 64-bit, nilai maksimum sekitar 9 triliun), tetapi Anda lebih baik memperlakukannya sebagai string di PHP, dan VarChar di database Anda.