Et kreditkortnummer er ikke et "nummer" i matematisk forstand, det er bare tilfældigvis en række cifre. Du behøver aldrig at spørge "hvad er dette kortnummer plus et?" eller "... gange to?", men du vil måske spørge "hvad er de første fire cifre i dette kortnummer?" eller "de sidste fire...?"
Hvis du behandler det som et tal, vil det være et tal meget større, end du normalt ville arbejde med:4444333333322221111 (et Visa-testkortnummer) er "4 quadrillioner 444 billioner 333 milliarder 322 millioner 221 tusind 1 hundrede og 11".
Vigtigt er det, at det største tal, der kan gemmes i et signeret 32-bit heltal - hvilket er hvad du får, når du angiver "int" i SQL - er blot mere end 2 milliarder, så et kortnummer kommer ikke i nærheden af at passe. Din database vil enten give dig en fejl, eller bare gemme et andet nummer, der passer - i dit tilfælde er det bare at gemme det højeste nummer, den kan.
Du kan ændre din kolonne til en "bigint" (64-bit fortegn, maksimal værdi omkring 9 quintillioner), men du er bedre til at behandle dem som strenge i din PHP og VarChar i din database.