データがCSVファイルからのものである場合は、すべての値が文字列になることを覚えておく必要があります(数値文字列でも文字列タイプがあります)。
したがって、is_int()
は使用できません / is_float()
/etc。、それはタイプについてのみ教えてくれるからです または変数。 is_numeric()
を使用できます 値をチェックしますが、これにより「+0123.45e6」のような指数表記などが可能になります。時々ctype_digit()
この理由で整数をテストするのに役立ちます。これは、0〜9の数字のみが文字列に存在して、trueを返すことができるためです。
正規表現を使用してパターンベースのデータ型を識別することもできますが、大きなデータセットを処理する場合はパフォーマンスのオーバーヘッドに注意する必要があります。ほとんどの場合、パフォーマンスの観点から、preg_
を使用することをお勧めします。 ereg
の代わりに関数ファミリー 関数。
ENUMやSET型などを検証する場合は、有効な値を含む配列を作成し(またはクエリでこれらを抽出し)、in_array()
を使用して値を確認する必要があります。 。
CHAR / VARCHARフィールドの場合、列定義を解析してから、値の長さが制約内にあるかどうかを確認できます。
いずれかの列でNULLタイプが許可されている場合は、これに対してもチェックする必要があります(おそらく、空の値または文字列「NULL」を実際のNULL値にマップします)。
これらの値を実際に適切にエスケープしたい場合は、プリペアドステートメントとPDO(PHPデータオブジェクト)拡張機能の使用を検討してください。これにより、MySQLはタイプに基づいてデータを適切にエスケープできます。 (MySQLiでプリペアドステートメントを使用することもできます。)
特定のデータ型とそれらを識別する方法を探している場合は、質問を編集して、より完全な回答を容易にすることをお勧めします。