Un numéro de carte de crédit n'est pas un « nombre » au sens mathématique, il s'agit simplement d'une chaîne de chiffres. Vous n'avez jamais besoin de demander "quel est ce numéro de carte plus un ?" ou "... fois deux ?", mais vous pourriez demander "quels sont les quatre premiers chiffres de ce numéro de carte ?" ou "les quatre derniers... ?"
Si vous le traitez comme un nombre, ce sera un nombre beaucoup plus grand que celui avec lequel vous travailleriez normalement :44443333322221111 (un numéro de carte de test Visa) est "4 quadrillions 444 billions 333 milliards 322 millions 221 mille 1 cent 11".
Il est important de noter que le plus grand nombre pouvant être stocké dans un entier 32 bits signé - ce que vous obtenez lorsque vous spécifiez "int" en SQL - est un peu plus de 2 milliards, donc un numéro de carte n'est pas proche de l'ajustement. Votre base de données vous donnera soit une erreur, soit stockera simplement un autre nombre qui convient ; dans votre cas, il s'agit simplement de stocker le nombre le plus élevé possible.
Vous pouvez changer votre colonne en "bigint" (64 bits signés, valeur maximale autour de 9 quintillions), mais il vaut mieux les traiter comme des chaînes dans votre PHP et VarChar dans votre base de données.