sql >> Databasteknik >  >> RDS >> Mysql

Kontrollera PHP-variabeltypen mot en MYSQL-datatyp

Om data kommer från en CSV-fil måste du komma ihåg att alla värden kommer att vara strängar (även numeriska strängar har fortfarande en strängtyp).

Så du kan inte använda is_int() /is_float() /etc., eftersom det bara berättar om typen eller variabeln. Du kan använda is_numeric() för att kontrollera värdet, men detta tillåter saker som exponentiell notation som "+0123.45e6". Ibland ctype_digit() kan vara användbart för att testa heltal av denna anledning, eftersom det bara tillåter att siffrorna 0-9 finns i en sträng för att den ska returnera sant.

Reguljära uttryck kan också användas för att identifiera mönsterbaserade datatyper, men du måste se upp för prestandakostnader när du hanterar stora datamängder. Det är nästan alltid tillrådligt ur ett prestandaperspektiv att använda preg_ familj av funktioner istället för ereg funktioner.

Om du validerar saker som ENUM- eller SET-typer, måste du förmodligen skapa en array som innehåller lagliga värden (eller extrahera dessa med en fråga) och sedan kontrollera värdet mot dem med in_array() .

För CHAR/VARCHAR-fält kan du analysera kolumndefinitionen och sedan kontrollera om längden på värdet faller inom begränsningarna.

Om NULL-typen är tillåten i någon av dina kolumner, måste du också kontrollera mot detta (och förmodligen mappa tomma värden eller strängen "NULL" till ett faktiskt NULL-värde).

Om du verkligen vill undvika dessa värden på rätt sätt, titta på att använda förberedda satser och tillägget PDO (PHP Data Objects). Detta tillåter MySQL att korrekt undkomma data baserat på typ. (Du kan också använda förberedda uttalanden med MySQLi.)

Om du letar efter specifika datatyper och hur du identifierar dem, kanske du vill redigera din fråga för att underlätta mer fullständiga svar.




  1. Hur man lägger till modul till Wildfly med CLI

  2. Kontrollera parametertypen för en partitionsfunktion i SQL Server (T-SQL)

  3. Heroku pg:pull kunde inte fylla i schemat

  4. En datamodell för barnkalas