クレジットカード番号は、数学的な意味での「番号」ではなく、たまたま数字の文字列です。 「このカード番号に1を加えたものは何ですか?」と尋ねる必要はありません。または「...2倍?」ですが、「このカード番号の最初の4桁は何ですか?」と尋ねることができます。または「最後の4つ...?」
数字として扱うと、通常の数字よりもはるかに大きくなります。44443333322221111(Visaテストカード番号)は、「4兆444兆3,330億3億2,200万221千111」です。
重要なのは、符号付き32ビット整数に格納できる最大数(SQLで「int」を指定したときに得られる数)は20億をわずかに超えるため、カード番号が適切に近づかないことです。データベースはエラーを出すか、適切な他の数値を保存します。あなたの場合は、可能な限り最大の数値を保存しているだけです。
列を「bigint」(64ビット署名、最大値は約9兆)に変更できますが、PHPでは文字列として扱い、データベースではVarCharとして扱う方がよいでしょう。