Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

UPDATE mysql op não funciona com cc-number


Um número de cartão de crédito não é um "número" no sentido matemático, é apenas uma sequência de dígitos. Você nunca precisa perguntar "qual é o número do cartão mais um?" ou "...vezes dois?", mas você pode querer perguntar "quais são os primeiros quatro dígitos deste número de cartão?" ou "os últimos quatro...?"

Se você tratá-lo como um número, será um número muito maior do que você normalmente trabalharia com:44443333322221111 (um número de cartão de teste Visa) é "4 quatrilhões 444 trilhões 333 bilhões 322 milhões 221 mil 1 cento e 11".

É importante ressaltar que o maior número que pode ser armazenado em um inteiro de 32 bits assinado - que é o que você obtém quando especifica "int" no SQL - é pouco mais de 2 bilhões, portanto, um número de cartão não chega perto de encaixar. Seu banco de dados lhe dará um erro ou apenas armazenará algum outro número que se encaixa - no seu caso, está apenas armazenando o número mais alto possível.

Você pode alterar sua coluna para um "bigint" (assinado de 64 bits, valor máximo em torno de 9 quintilhões), mas é melhor tratá-los como strings em seu PHP e VarChar em seu banco de dados.