Mysql
 sql >> Datenbank >  >> RDS >> Mysql

UPDATE mysql op funktioniert nicht mit cc-Nummer

Eine Kreditkartennummer ist keine „Zahl“ im mathematischen Sinne, sondern eine Zahlenfolge. Sie müssen nie fragen:"Was ist diese Kartennummer plus eins?" oder "... mal zwei?", aber Sie möchten vielleicht fragen "Wie lauten die ersten vier Ziffern dieser Kartennummer?" oder "die letzten vier...?"

Wenn Sie es als Zahl behandeln, ist es eine Zahl, die viel größer ist, als Sie normalerweise damit arbeiten würden:44443333322221111 (eine Visa-Testkartennummer) ist "4 Billiarden 444 Billionen 333 Milliarden 322 Millionen 221 Tausend 1 Hundert und 11".

Wichtig ist, dass die größte Zahl, die in einer vorzeichenbehafteten 32-Bit-Ganzzahl gespeichert werden kann – was Sie erhalten, wenn Sie „int“ in SQL angeben – etwas mehr als 2 Milliarden ist, sodass eine Kartennummer nicht annähernd passt. Ihre Datenbank gibt Ihnen entweder einen Fehler aus oder speichert einfach eine andere Zahl, die passt - in Ihrem Fall speichert sie nur die höchstmögliche Zahl.

Sie könnten Ihre Spalte in "Bigint" (64-Bit mit Vorzeichen, maximaler Wert um 9 Trillionen) ändern, aber Sie behandeln sie besser als Strings in Ihrem PHP und als VarChar in Ihrer Datenbank.