をチェックまだ文字列型を持っています)。
だから、is_int()
/is_float()
の/ etcを使用することはできません。、それが唯一のタイプや変数について説明しますので。値を確認するのにis_numeric()
を使うことができますが、これによって "+ 0123.45e6"のような指数表記が可能になります。場合によってはctype_digit()
は、この理由で整数をテストするのに便利です。なぜなら、0から9までの数字が文字列にtrueを返すことができるからです。
正規表現は、パターン・ベースのデータ・タイプを識別するために使用できますが、大規模なデータセットを扱う際のパフォーマンス・オーバーヘッドを監視する必要があります。パフォーマンスの観点からは、ほとんどの場合、ereg
関数の代わりにpreg_
ファミリの関数を使用することをお勧めします。
ENUM型やSET型のようなものを検証する場合は、合法的な値を含む配列を作成するか、クエリでこれらを抽出し、値をin_array()
でチェックする必要があります。
CHAR/VARCHARフィールドの場合、列定義を解析し、値の長さが制約内に収まるかどうかを確認できます。
NULL型は、あなたの任意の列に許可されている場合は、これに反対をチェックする必要があります(おそらく、実際のNULL値に空の値または文字列「NULL」をマッピングする)と思います。
実際にこれらの値を適切にエスケープするには、プリペアドステートメントとPDO(PHP Data Objects)拡張を使用してください。これにより、MySQLはタイプに基づいてデータを適切にエスケープできます。 (また、MySQLiを持つプリペアドステートメントを使用することができます。)
をあなたはどのようにそれらを同定するための特定のデータ型を探しているなら、あなたはより完全な答えを容易にするために、あなたの質問を編集したい場合があります。
これはなぜ正確にやっていますか? MySQLテーブルに格納されている各フィールドのデータ型がわからない場合は、何か問題があります。あなたが_抽象物を抽象化したい場合は、ORMライブラリを使用してください。 – Bojangles
タイプをチェックする必要があるデータはどこから入手できますか? – zerkms
私はあなたが探しているものを正確には分かりません。 。 。エスケープクエリのためにタイプ検出を処理しようとしているのですか、またはデータが特定のタイプで許可されているかどうかを確認しようとしていますか? PHPの特定の値は、MySQLのさまざまな型と一致する可能性があることも覚えておいてください。たとえば、値 "15.46"は文字列型(SET/ENUMの値も含む)数値型の数値(DECIMAL、FLOAT、DOUBLEなど)。だから、意味のある答えをあなたに与えるために、より詳細な情報を知る必要があります。 – justbeez