sql >> Database >  >> RDS >> Mysql

UPDATE mysql werkt niet met cc-nummer

Een creditcardnummer is geen "nummer" in wiskundige zin, het is gewoon een reeks cijfers. U hoeft nooit te vragen "wat is dit kaartnummer plus één?" of "...maal twee?", maar u kunt vragen "wat zijn de eerste vier cijfers van dit kaartnummer?" of "de laatste vier...?"

Als u het wel als een getal behandelt, is het een veel groter getal dan u normaal zou gebruiken:44443333322221111 (een Visa-testkaartnummer) is "4 quadriljoen 444 biljoen 333 miljard 322 miljoen 221 duizend 1 honderd en 11".

Belangrijk is dat het grootste getal dat kan worden opgeslagen in een 32-bits geheel getal met teken - wat je krijgt als je "int" opgeeft in SQL - slechts meer dan 2 miljard is, dus een kaartnummer komt niet in de buurt van passend. Je database geeft je ofwel een foutmelding, of je slaat gewoon een ander nummer op dat wel past - in jouw geval slaat het gewoon het hoogste nummer op dat mogelijk is.

Je zou je kolom kunnen veranderen in een "bigint" (64-bits ondertekend, maximale waarde ongeveer 9 triljoen), maar je kunt ze beter behandelen als strings in je PHP en VarChar in je database.




  1. Fix MySQL-waarschuwing 1287:'BINARY expr' is verouderd en zal in een toekomstige release worden verwijderd

  2. Wat is een schema in SQL Server en hoe maak je een schema in SQL Server-database? - SQL Server / TSQL-zelfstudie, deel 27

  3. ScaleGrid DigitalOcean-ondersteuning voor MySQL, PostgreSQL en Redis™ nu beschikbaar

  4. Waarom geeft SELECT ... WHERE id =a een resultaat als waarde 0 is