PHPで下記のようにmysqliクラスを使ってMySQLから取得した値は、全て文字列型になって返されるようですが、この返値をテーブルの各カラムで指定した型(INTなど)に自動的にあわせる方法はありませんでしょうか?


> $mysqli = new mysqli('127.0.0.1', 'user', 'password', 'database');
> $result = $mysqli->query('SELECT * FROM table WHERE id = 1');
> $data = $result->fetch_assoc(); // 配列の値は文字列型になる

※PDOではなく、あくまでもmysqliクラスでの実装をお願いします

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2015/10/06 14:13:49
  • 終了:2015/10/07 10:38:35

ベストアンサー

id:a-kuma3 No.2

a-kuma3回答回数4524ベストアンサー獲得回数18802015/10/06 16:34:04

ポイント70pt

fetch_field メソッドなどで、型の情報などが取得できます。それの type で判定してキャストしてあげるしかないと思います。
http://php.net/manual/en/mysqli-result.fetch-field.php
http://php.net/manual/en/mysqli-result.fetch-fields.php
http://php.net/manual/en/mysqli-result.fetch-field-direct.php

fetch_field メソッドが呼べる mysqli_result オブジェクトは query メソッドの戻り値でも良いですし、mysqli_stmt の result_metadata メソッドでも取得できます。
http://php.net/manual/en/mysqli-stmt.result-metadata.php

一回目に書くときは少々面倒ですけれど、fetch_fields の戻り値と fetch_assoc の戻り値を渡して、変換した値の配列を返す、というロジックは関数化できるので、使いまわしは効きます。

他2件のコメントを見る
id:a-kuma3

× そのままの方で返して
そのままの型で返して

 X-|

2015/10/07 09:38:26
id:wankodon

やはり自前の実装が必要なのですね。重ねてありがとうございました。

2015/10/07 10:37:59

その他の回答(1件)

id:pogpi No.1

POGPI回答回数377ベストアンサー獲得回数502015/10/06 14:54:15

ポイント30pt

intvalでint型にすればいいのではないでしょうか。

id:wankodon

できれば自動でやりたいのです。

2015/10/06 15:45:57
id:a-kuma3 No.2

a-kuma3回答回数4524ベストアンサー獲得回数18802015/10/06 16:34:04ここでベストアンサー

ポイント70pt

fetch_field メソッドなどで、型の情報などが取得できます。それの type で判定してキャストしてあげるしかないと思います。
http://php.net/manual/en/mysqli-result.fetch-field.php
http://php.net/manual/en/mysqli-result.fetch-fields.php
http://php.net/manual/en/mysqli-result.fetch-field-direct.php

fetch_field メソッドが呼べる mysqli_result オブジェクトは query メソッドの戻り値でも良いですし、mysqli_stmt の result_metadata メソッドでも取得できます。
http://php.net/manual/en/mysqli-stmt.result-metadata.php

一回目に書くときは少々面倒ですけれど、fetch_fields の戻り値と fetch_assoc の戻り値を渡して、変換した値の配列を返す、というロジックは関数化できるので、使いまわしは効きます。

他2件のコメントを見る
id:a-kuma3

× そのままの方で返して
そのままの型で返して

 X-|

2015/10/07 09:38:26
id:wankodon

やはり自前の実装が必要なのですね。重ねてありがとうございました。

2015/10/07 10:37:59

コメントはまだありません

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

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

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

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