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

Überprüfen Sie den PHP-Variablentyp gegen einen MYSQL-Datentyp

Wenn die Daten aus einer CSV-Datei stammen, müssen Sie daran denken, dass alle Werte Strings sein werden (selbst numerische Strings haben immer noch einen String-Typ).

Sie können also is_int() nicht verwenden /is_float() /etc., weil das nur über den Typ Auskunft gibt oder die Variable. Sie könnten is_numeric() verwenden um den Wert zu überprüfen, aber dies ermöglicht Dinge wie Exponentialschreibweise wie "+0123.45e6". Manchmal ctype_digit() kann aus diesem Grund zum Testen von ganzen Zahlen nützlich sein, da es nur erlaubt, dass die Zahlen 0-9 in einem String vorhanden sind, damit es wahr zurückgibt.

Reguläre Ausdrücke können auch verwendet werden, um musterbasierte Datentypen zu identifizieren, aber Sie müssen auf Leistungseinbußen achten, wenn Sie mit großen Datensätzen umgehen. Aus Performance-Sicht ist es fast immer ratsam, preg_ zu verwenden Funktionsfamilie anstelle von ereg Funktionen.

Wenn Sie Dinge wie ENUM- oder SET-Typen validieren, müssen Sie wahrscheinlich ein Array mit zulässigen Werten erstellen (oder diese mit einer Abfrage extrahieren) und dann den Wert mit in_array() gegen sie prüfen .

Für CHAR/VARCHAR-Felder könnten Sie die Spaltendefinition parsen und dann prüfen, ob die Länge des Werts innerhalb der Beschränkungen liegt.

Wenn der NULL-Typ für eine Ihrer Spalten zulässig ist, müssen Sie dies auch überprüfen (und wahrscheinlich leere Werte oder die Zeichenfolge "NULL" einem tatsächlichen NULL-Wert zuordnen).

Wenn Sie diese Werte tatsächlich richtig maskieren möchten, sehen Sie sich die Verwendung vorbereiteter Anweisungen und der Erweiterung PDO (PHP Data Objects) an. Dadurch kann MySQL die Daten basierend auf dem Typ richtig maskieren. (Sie können auch vorbereitete Anweisungen mit MySQLi verwenden.)

Wenn Sie nach bestimmten Datentypen suchen und wissen möchten, wie Sie sie identifizieren können, sollten Sie Ihre Frage bearbeiten, um vollständigere Antworten zu erhalten.