【MySQL + PHP】

mysql_query()で返された結果$resultに対して
$field = mysql_fetch_field($result)で
フィールドの情報を取得したときに、
$field->typeで、データのタイプ(=型?)が参照できますが、
MySQLのcreate tableで指定した型とは同一ではありません。
このタイプにはどんな種類があるか教えてください。


現状では、int,string,blob,realなどがあることが分かっています。
MySQLのcreate tableで指定した型と
mysql_fetch_field()で取得した->typeとの
対応表が載っているURLがあれば最高です。
よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/08/21 23:48:13
  • 終了:2006/08/22 00:57:10

ベストアンサー

id:pyopyopyo No.3

pyopyopyo回答回数357ベストアンサー獲得回数882006/08/22 00:49:33

ポイント80pt

phpのマニュアル

http://jp.php.net/manual/ja/function.mysql-fetch-field.php

http://jp.php.net/manual/ja/function.mysql-field-type.php

によると,以下のような対応になるみたいです.

MYSQL側の型 $field->typeの値
CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET string
TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER, BIGINT int
FLOAT, DOUBLE, DECIMAL, NUMERIC real
TIMESTAMP timestamp
YEAR year
DATE date
TIME time
DATETIME datetime
TINYBLOB, MEDIUMBLOB, LONGBLOB, BLOB blob
id:Nigitama

おー!!!!!

すごいですね!

マニュアルも、見たは見たんですが、

mysql_fetch_field()のところばっかり読んでました。

非常に役に立つ回答をいただきました。

ありがとうございます!

丁寧な表までいただいて感激です。

がんばります!

2006/08/22 00:56:18

その他の回答(2件)

id:acute_hello_to No.1

acute_hello_to回答回数47ベストアンサー獲得回数12006/08/21 23:55:42

id:Nigitama

見当たりません。

mysql_fetch_field()

で取得した結果から、->typeで参照できるデータの型です。

MySQLのフィールドがfloat型の場合、

mysql_fetch_field()の結果では

realというデータ型が返ってきます。

この種類を知りたいのです。

2006/08/22 00:08:19
id:takemori No.2

takemori回答回数29ベストアンサー獲得回数22006/08/22 00:48:05

http://www.javadrive.jp/mysql/datatype/index.html

また、CASTをSQL文で使うことで型を指定することが出来ます

例:SELECT CAST(id as char) FROM test;

id:Nigitama

はい。

それで・・・・・?

指定することが出来て、

それで、どうなるのですか?

2006/08/22 00:50:43
id:pyopyopyo No.3

pyopyopyo回答回数357ベストアンサー獲得回数882006/08/22 00:49:33ここでベストアンサー

ポイント80pt

phpのマニュアル

http://jp.php.net/manual/ja/function.mysql-fetch-field.php

http://jp.php.net/manual/ja/function.mysql-field-type.php

によると,以下のような対応になるみたいです.

MYSQL側の型 $field->typeの値
CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET string
TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER, BIGINT int
FLOAT, DOUBLE, DECIMAL, NUMERIC real
TIMESTAMP timestamp
YEAR year
DATE date
TIME time
DATETIME datetime
TINYBLOB, MEDIUMBLOB, LONGBLOB, BLOB blob
id:Nigitama

おー!!!!!

すごいですね!

マニュアルも、見たは見たんですが、

mysql_fetch_field()のところばっかり読んでました。

非常に役に立つ回答をいただきました。

ありがとうございます!

丁寧な表までいただいて感激です。

がんばります!

2006/08/22 00:56:18
  • id:kurukuru-neko

    PHPのバージョンによりバージョンによっては不具合があったり、
    違う結果になる可能性があります。
    使う場合は、確認が必要と思います。

    http://jp2.php.net/manual/ja/function.mysql-field-type.php
  • id:Nigitama
    kurukuru-nekoさん!
    アドバイスありがとうございます!

    自分で確認の取れそうな量なので、
    是非やってみます。

    質問終了後にもかかわらず
    わざわざコメントとしてお答えいただいて
    ありがとうございます。

    ちょっとマイナー(?)な内容かもしれませんが、
    ひょっとしたら知りたい人が居るかもしれませんので、
    試した後に、ここにコメントとして乗せたいと思います。
  • id:Nigitama
    結果発表です。
    WinXP
    MySQL 4.2.18
    PHP 5.1.2

    基本的には、pyopyopyoさんの表のとおりです。
    違ったところは、
    TINYTEXT,MEDIUMTEXT,TEXT,LONGTEST
    このTEXTと名のつく4つのフィールドは
    mysql_fetch_field()の
    ->typeでは、
    blobという結果になりました。

    結局自分で全部調べて結果が分かりましたが、
    pyopyopyoさんも、kurukuru-nekoさんも
    お二人のアドバイスのおかげです。

    本当に助かりました。
    ありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません