Als de gegevens uit een CSV-bestand komen, moet u onthouden dat alle waarden strings zullen zijn (zelfs numerieke strings hebben nog steeds een stringtype).
U kunt dus geen gebruik maken van is_int()
/is_float()
/etc., want dat vertelt je alleen over het type of de variabele. Je zou is_numeric()
. kunnen gebruiken om de waarde te controleren, maar dit maakt zaken als exponentiële notatie zoals "+0123.45e6" mogelijk. Soms ctype_digit()
kan om deze reden handig zijn voor het testen van gehele getallen, omdat alleen de getallen 0-9 in een tekenreeks mogen voorkomen om waar te retourneren.
Reguliere expressies kunnen ook worden gebruikt om op patronen gebaseerde gegevenstypen te identificeren, maar u moet wel uitkijken voor prestatieoverhead bij het omgaan met grote gegevenssets. Vanuit prestatieperspectief is het bijna altijd aan te raden om de preg_
. te gebruiken familie van functies in plaats van de ereg
functies.
Als je zaken als ENUM- of SET-typen valideert, moet je waarschijnlijk een array maken met legale waarden (of deze extraheren met een query) en vervolgens de waarde vergelijken met in_array()
.
Voor CHAR/VARCHAR-velden kunt u de kolomdefinitie ontleden en vervolgens controleren of de lengte van de waarde binnen de beperkingen valt.
Als het NULL-type is toegestaan in een van uw kolommen, moet u dit ook controleren (en waarschijnlijk lege waarden of de tekenreeks "NULL" toewijzen aan een werkelijke NULL-waarde).
Als u op de juiste manier aan deze waarden wilt ontsnappen, kunt u beter voorbereide instructies en de PDO-extensie (PHP Data Objects) gebruiken. Hierdoor kan MySQL op de juiste manier ontsnappen aan de gegevens op basis van type. (U kunt ook voorbereide verklaringen gebruiken met MySQLi.)
Als u op zoek bent naar specifieke gegevenstypen en hoe u deze kunt identificeren, wilt u misschien uw vraag bewerken om completere antwoorden mogelijk te maken.