Jeśli dane pochodzą z pliku CSV, musisz pamiętać, że wszystkie wartości będą ciągami (nawet ciągi numeryczne nadal mają typ ciągu).
Więc nie możesz użyć is_int()
/is_float()
/itd., ponieważ mówi tylko o typie lub zmienna. Możesz użyć is_numeric()
aby sprawdzić wartość, ale pozwoli to na takie rzeczy, jak notacja wykładnicza, np. „+0123.45e6”. Czasami ctype_digit()
z tego powodu może być przydatne do testowania liczb całkowitych, ponieważ pozwoli na obecność w ciągu tylko liczb od 0 do 9, aby zwrócić prawdę.
Wyrażenia regularne mogą być również używane do identyfikowania typów danych opartych na wzorcach, ale w przypadku dużych zestawów danych należy zwracać uwagę na obciążenie wydajnościowe. Z perspektywy wydajności prawie zawsze zaleca się użycie preg_
rodzina funkcji zamiast ereg
funkcje.
Jeśli walidujesz rzeczy takie jak typy ENUM lub SET, prawdopodobnie będziesz musiał utworzyć tablicę zawierającą dopuszczalne wartości (lub wyodrębnić je za pomocą zapytania), a następnie porównać z nimi wartość za pomocą in_array()
.
W przypadku pól CHAR/VARCHAR można przeanalizować definicję kolumny, a następnie sprawdzić, czy długość wartości mieści się w granicach.
Jeśli typ NULL jest dozwolony w dowolnej z twoich kolumn, musisz również sprawdzić to (i prawdopodobnie mapować puste wartości lub ciąg "NULL" na rzeczywistą wartość NULL).
Jeśli chcesz właściwie uciec od tych wartości, zapoznaj się z użyciem przygotowanych instrukcji i rozszerzenia PDO (PHP Data Objects). Pozwala to MySQL na prawidłowe ucieczkę danych na podstawie typu. (Możesz również użyć przygotowanych instrukcji z MySQLi.)
Jeśli szukasz konkretnych typów danych i sposobu ich identyfikacji, możesz edytować swoje pytanie, aby uzyskać pełniejsze odpowiedzi.