Un número de tarjeta de crédito no es un "número" en el sentido matemático, simplemente es una cadena de dígitos. Nunca necesita preguntar "¿cuál es este número de tarjeta más uno?" o "...por dos?", pero es posible que desee preguntar "¿cuáles son los primeros cuatro dígitos de este número de tarjeta?" o "¿los últimos cuatro...?"
Si lo trata como un número, será un número mucho más grande de lo que normalmente trabajaría:44443333322221111 (un número de tarjeta de prueba Visa) es "4 cuatrillones 444 billones 333 mil millones 322 millones 221 mil 1 ciento 11".
Es importante destacar que el número más grande que se puede almacenar en un entero de 32 bits con signo, que es lo que obtiene cuando especifica "int" en SQL, es solo más de 2 mil millones, por lo que un número de tarjeta no se acerca a encajar. Su base de datos le dará un error o simplemente almacenará algún otro número que encaje; en su caso, solo está almacenando el número más alto que puede.
Podría cambiar su columna a "bigint" (64 bits firmados, valor máximo alrededor de 9 quintillones), pero es mejor tratarlos como cadenas en su PHP y VarChar en su base de datos.