Mysql
 sql >> Database >  >> RDS >> Mysql

UPDATE mysql op non funziona con cc-number

Un numero di carta di credito non è un "numero" in senso matematico, è solo una stringa di cifre. Non hai mai bisogno di chiedere "che cos'è questo numero di carta più uno?" o "... per due?", ma potresti chiedere "quali sono le prime quattro cifre di questo numero di carta?" o "gli ultimi quattro...?"

Se lo tratti come un numero, sarà un numero molto più grande di quello con cui lavoreresti normalmente:444433333222221111 (un numero di una carta di prova Visa) è "4 quadrilioni 444 trilioni 333 miliardi 322 milioni 221 mila 1 cento e 11".

È importante sottolineare che il numero più grande che può essere memorizzato in un intero con segno a 32 bit - che è quello che si ottiene quando si specifica "int" in SQL - è solo più di 2 miliardi, quindi un numero di carta non si avvicina all'adattamento. Il tuo database ti darà un errore o memorizzerà semplicemente un altro numero che si adatta:nel tuo caso, sta solo memorizzando il numero più alto possibile.

Potresti cambiare la tua colonna in un "bigint" (64 bit con segno, valore massimo di circa 9 quintilioni), ma è meglio trattarli come stringhe nel tuo PHP e VarChar nel tuo database.