Číslo kreditní karty není „číslo“ v matematickém smyslu, je to jen řetězec číslic. Nikdy se nemusíte ptát:„Co je to číslo karty plus jedna?“ nebo "...krát dva?", ale možná se budete chtít zeptat "jaké jsou první čtyři číslice tohoto čísla karty?" nebo „poslední čtyři...?“
Pokud s ním budete zacházet jako s číslem, bude to číslo mnohem větší, než se kterým byste normálně pracovali:44443333322221111 (číslo testovací karty Visa) je „4 kvadriliony 444 bilionů 333 miliard 322 milionů 221 tisíc 1 sto 11“.
Důležité je, že největší číslo, které lze uložit do 32bitového celého čísla se znaménkem – což je to, co získáte, když v SQL zadáte „int“ – je jen více než 2 miliardy, takže číslo karty se ani zdaleka nevejde. Vaše databáze vám buď oznámí chybu, nebo prostě uloží nějaké jiné číslo, které se hodí – ve vašem případě ukládá pouze nejvyšší možné číslo.
Svůj sloupec můžete změnit na „bigint“ (64bitové znaménko, maximální hodnota kolem 9 kvintilionů), ale je lepší s nimi zacházet jako s řetězci ve vašem PHP a VarChar ve vaší databázi.