sql >> Database >  >> RDS >> Mysql

Controleer het type PHP-variabele tegen een MYSQL-gegevenstype

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.




  1. Hoe kan ik deze beperking definiëren?

  2. Hoe een bestaande Oracle-reeks te gebruiken om een ​​id in de slaapstand te genereren?

  3. Vind de op één na hoogste salaris best mogelijke manieren

  4. Kwam het symbool =. tegen